3rdParty/boost/1.78.0/libs/mpl/doc/src/refmanual/arg.rst
.. Metafunctions/Composition and Argument Binding//arg |50
.. 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;
};
};
arg<n> specialization is a |Metafunction Class| that return the n\ th of its arguments.
.. parsed-literal::
#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|:
.. parsed-literal::
typedef apply_wrap\ *n*\< arg<\ *n*\ >,a1,\ |...|\a\ *n* >::type x;
:Return type: A type.
:Semantics:
x is identical to an.
.. 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 > ));
|Composition and Argument Binding|, |Placeholders|, |lambda|, |bind|, |apply|, |apply_wrap|
.. copyright:: Copyright 2001-2009 Aleksey Gurtovoy and David Abrahams Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)