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

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
PrevUpHomeNext

function_traits

template <class F>
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.

Table 1.12. Function Traits Members

Member

Description

function_traits<F>::arity

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

function_traits<F>::result_type

The type returned by function type F.

function_traits<F>::argN_type

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


Table 1.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 arg5_type since there are only four arguments.

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

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



PrevUpHomeNext