Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2001-12-05 10:35:08


#include <boost/static_assert.hpp>
#include <cstddef>

// Computes (at compile-time) the number of elements that a Python
// argument tuple must have in order to be passed to a wrapped C++
// (member) function of the given type.

typedef char (&a1) [1];
typedef char (&a2) [2];

template<class R> a1 f(R (*)());
template<class R, class T> a2 f(R (T::*)());

template <class F> struct arg_tuple_size
{
    enum { value = sizeof(f(F())) - 1 };
};

struct X
{
};

int main()
{
 typedef void (X::*pmf_type)();

 enum { v = arg_tuple_size<pmf_type>::value };

    BOOST_STATIC_ASSERT(v == 1);
    
 return 0;
}

--
Peter Dimov
Multi Media Ltd.

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk