apply.rst

来自「Boost provides free peer-reviewed portab」· RST 代码 · 共 120 行

RST
120
字号
.. Metafunctions/Invocation//apply |10.. Copyright Aleksey Gurtovoy, David Abrahams 2007... 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)apply=====Synopsis--------.. parsed-literal::    template<           typename F        >    struct apply0    {        typedef |unspecified| type;    };    template<           typename F, typename A1        >    struct apply1    {        typedef |unspecified| type;    };        |...|        template<           typename F, typename A1,\ |...| typename An        >    struct apply\ *n*    {        typedef |unspecified| type;    };        template<           typename F        , typename A1 = |unspecified|        |...|        , typename An = |unspecified|        >    struct apply    {        typedef |unspecified| type;    };Description-----------Invokes a |Metafunction Class| or a |Lambda Expression| ``F`` with arguments ``A1``,... ``An``.Header------.. parsed-literal::        #include <boost/mpl/apply.hpp>Parameters----------+---------------+-----------------------------------+-----------------------------------------------+| Parameter     | Requirement                       | Description                                   |+===============+===================================+===============================================+| ``F``         | |Lambda Expression|               | An expression to invoke.                      |+---------------+-----------------------------------+-----------------------------------------------+| |A1...An|     | Any type                          | Invocation arguments.                         |+---------------+-----------------------------------+-----------------------------------------------+Expression semantics--------------------For any |Lambda Expression| ``f`` and arbitrary types ``a1``,... ``an``:.. parsed-literal::    typedef apply\ *n*\<f,a1,\ |...|\ a\ *n*\>::type t;    typedef apply<f,a1,\ |...|\ a\ *n*\>::type t;:Return type:    Any type.:Semantics:    Equivalent to ``typedef apply_wrap``\ *n*\ ``< lambda<f>::type,a1,... an>::type t;``.Example-------.. parsed-literal::    template< typename N1, typename N2 > struct int_plus        : int_<( N1::value + N2::value )>    {    };        typedef apply< int_plus<_1,_2>, int_<2>, int_<3> >::type r1;    typedef apply< quote\ ``2``\ <int_plus>, int_<2>, int_<3> >::type r2;        BOOST_MPL_ASSERT_RELATION( r1::value, ==, 5 );    BOOST_MPL_ASSERT_RELATION( r2::value, ==, 5 );See also--------|Metafunctions|, |apply_wrap|, |lambda|, |quote|, |bind|

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?