File: unpack_args.rst

package info (click to toggle)
boost1.74 1.74.0-9
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 464,084 kB
  • sloc: cpp: 3,338,324; xml: 131,293; python: 33,088; ansic: 14,336; asm: 4,034; sh: 3,351; makefile: 1,193; perl: 1,036; yacc: 478; php: 212; ruby: 102; lisp: 24; sql: 13; csh: 6
file content (98 lines) | stat: -rw-r--r-- 1,977 bytes parent folder | download | duplicates (15)
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)