Back to Arangodb

arg

3rdParty/boost/1.78.0/libs/mpl/doc/src/refmanual/arg.rst

3.12.9.12.2 KB
Original Source

.. 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<n> specialization is a |Metafunction Class| that return the n\ th of its arguments.

.. parsed-literal::

#include <boost/mpl/arg.hpp>

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|

.. 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)