.. Metafunctions/Composition and Argument Binding//arg |50 arg === Synopsis -------- .. parsed-literal:: template< int n > struct arg; template<> struct arg<1> { template< typename A1,\ |...| typename A\ *n* = |unspecified| > struct apply { typedef A1 type; }; }; |...| template<> struct arg<\ *n*\> { template< typename A1,\ |...| typename A\ *n* > struct apply { typedef A\ *n* type; }; }; Description ----------- ``arg`` specialization is a |Metafunction Class| that return the ``n``\ th of its arguments. Header ------ .. parsed-literal:: #include Parameters ---------- +---------------+-----------------------------------+-----------------------------------------------+ | 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|: .. parsed-literal:: typedef apply_wrap\ *n*\< arg<\ *n*\ >,a1,\ |...|\a\ *n* >::type x; :Return type: A type. :Semantics: ``x`` is identical to ``an``. Example ------- .. parsed-literal:: typedef apply_wrap\ ``5``\< arg<1>,bool,char,short,int,long >::type t1; typedef apply_wrap\ ``5``\< 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|