Boost C++ Libraries 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.

Expression semantics

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, >::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 > ));

See also

Composition and Argument Binding, Placeholders, lambda, bind, apply, apply_wrap