...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Front Page / Metafunctions / Composition and Argument Binding / arg |
template< int n > struct arg; template<> struct arg<1> { template< typename A1,... typename An = unspecified > struct apply { typedef A1 type; }; }; ... template<> struct arg<n> { template< typename A1,... typename An > struct apply { typedef An type; }; };
arg<n> specialization is a Metafunction Class that return the nth of its arguments.
#include <boost/mpl/arg.hpp>
Parameter | Requirement | Description |
---|---|---|
n | An integral constant | A number of argument to return. |
For any integral constant n in the range [1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY] and arbitrary types a1,... an:
typedef apply_wrapn< arg<n>,a1,...an >::type x;
Return type: | A type. |
---|---|
Semantics: | x is identical to an. |
typedef apply_wrap5< arg<1>,bool,char,short,int,long >::type t1; typedef apply_wrap5< arg<3>,bool,char,short,int,long >::type t3; BOOST_MPL_ASSERT(( is_same< t1, bool > )); BOOST_MPL_ASSERT(( is_same< t3, short > ));