Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Click here to view the latest version of this page.
PrevUpHomeNext

function_traits

template <class T>
struct function_traits
{
   static const std::size_t    arity = see-below;
   typedef see-below           result_type;
   typedef see-below           argN_type; 
};

The class template function_traits will only compile if:

[Tip] Tip

function_traits is intended to introspect only C++ functions of the form R (), R( A1 ), R ( A1, ... etc. ) and not function pointers or class member functions. To convert a function pointer type to a suitable type use remove_pointer.

Table1.12.Function Traits Members

Member

Description

function_traits<T>::arity

An integral constant expression that gives the number of arguments accepted by the function type F.

function_traits<T>::result_type

The type returned by function type F.

function_traits<T>::argN_type

The Nth argument type of function type F, where 1 <= N <= arity of F.


Table1.13.Examples

Expression

Result

function_traits<void (void)>::arity

An integral constant expression that has the value 0.

function_traits<long (int)>::arity

An integral constant expression that has the value 1.

function_traits<long (int, long, double, void*)>::arity

An integral constant expression that has the value 4.

function_traits<void (void)>::result_type

The type void.

function_traits<long (int)>::result_type

The type long.

function_traits<long (int)>::arg1_type

The type int.

function_traits<long (int, long, double, void*)>::arg4_type

The type void*.

function_traits<long (int, long, double, void*)>::arg5_type

A compiler error: there is no arg4_type since there are only three arguments.

function_traits<long (*)(void)>::arity

A compiler error: argument type is a function pointer, and not a function type.



PrevUpHomeNext