...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
template<typename F> struct result_type;
Header
#include <boost/function_types/result_type.hpp>
F
Type to analyze
result_type<F>::type
Result type of F
Extracts the result type of a callable, builtin type.
If F
is no callable, builtin type, any attempt to access
the type
member results in a compile error.
template<typename F, class ClassTransform = add_reference<_> > struct parameter_types;
Header
#include <boost/function_types/parameter_types.hpp>
F
Type to analyze
ClassTransform
MPL - Lambda
Expression to transform the class type if F
is a member function pointer
parameter_types<F,ClassTransform>
MPL - Front / Back Extensible Random Access Sequence of parameter types
Extracts the parameter types of a callable, builtin type.
If F
is no callable, builtin type, any attempt to access
the sequence results in a compile error.
template<typename F> struct function_arity;
Header
#include <boost/function_types/function_arity.hpp>
F
Callable builtin type
function_arity<F>
Function arity as MPL - Integral Constant
function_arity<F>::value
Constant value of the function arity
Extracts the function arity, that is the number of parameters. The hidden
this
of member function pointers counts, in other words
the arity value is always greater than or equal to one if F
is a member function pointer.
If F
is no callable, builtin type, any attempt to access
the value results in a compile error.
template<typename T, class ClassTransform = add_reference<_> > struct components;
Header
#include <boost/function_types/components.hpp>
T
Type to analyze
ClassTransform
MPL - Lambda
Expression to transform the class type if T
is a member function pointer
components<T,ClassTransform>
MPL - Front / Back Extensible Random Access Sequence of all component types and property tag
components<T,ClassTransform>::types
Decorated MPL Sequence, exposed for optimization
Extracts all properties of a callable builtin type, that is the result
type, followed by the parameter types (including the type of this
for member function pointers).
If T
is no callable builtin type, the component types
are an empty sequence and the Tag's meaning is equivalent to the null_tag
.