1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
.. Metafunctions/Invocation//unpack_args |30
unpack_args
===========
Synopsis
--------
.. parsed-literal::
template<
typename F
>
struct unpack_args
{
// |unspecified|
// |...|
};
Description
-----------
A higher-order primitive transforming an *n*-ary |Lambda Expression| ``F`` into
an unary |Metafunction Class| ``g`` accepting a single sequence of *n* arguments.
Header
------
.. parsed-literal::
#include <boost/mpl/unpack_args.hpp>
Model of
--------
|Metafunction Class|
Parameters
----------
+---------------+-----------------------+-------------------------------------------+
| Parameter | Requirement | Description |
+===============+=======================+===========================================+
| ``F`` | |Lambda Expression| | A lambda expression to adopt. |
+---------------+-----------------------+-------------------------------------------+
Expression semantics
--------------------
For an arbitrary |Lambda Expression| ``f``, and arbitrary types |a1...an|:
.. parsed-literal::
typedef unpack_args<f> g;
:Return type:
|Metafunction Class|.
:Semantics:
``g`` is a unary |Metafunction Class| such that
.. parsed-literal::
apply_wrap\ *n*\ < g, vector<a1,\ |...|\ a\ *n*\ > >::type
is identical to
.. parsed-literal::
apply<F,a1,\ |...|\ a\ *n*\ >::type
Example
-------
.. parsed-literal::
BOOST_MPL_ASSERT(( apply<
unpack_args< is_same<_1,_2> >
, vector<int,int>
> ));
See also
--------
|Metafunctions|, |Lambda Expression|, |Metafunction Class|, |apply|, |apply_wrap|, |bind|
.. 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)
|