]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/mpl/doc/src/refmanual/apply.rst
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / mpl / doc / src / refmanual / apply.rst
CommitLineData
7c673cae
FG
1.. Metafunctions/Invocation//apply |10
2
3apply
4=====
5
6Synopsis
7--------
8
9.. parsed-literal::
10
11 template<
12 typename F
13 >
14 struct apply0
15 {
16 typedef |unspecified| type;
17 };
18
19 template<
20 typename F, typename A1
21 >
22 struct apply1
23 {
24 typedef |unspecified| type;
25 };
26
27 |...|
28
29 template<
30 typename F, typename A1,\ |...| typename An
31 >
32 struct apply\ *n*
33 {
34 typedef |unspecified| type;
35 };
36
37 template<
38 typename F
39 , typename A1 = |unspecified|
40 |...|
41 , typename An = |unspecified|
42 >
43 struct apply
44 {
45 typedef |unspecified| type;
46 };
47
48
49
50Description
51-----------
52
53Invokes a |Metafunction Class| or a |Lambda Expression| ``F`` with arguments ``A1``,... ``An``.
54
55
56Header
57------
58
59.. parsed-literal::
60
61 #include <boost/mpl/apply.hpp>
62
63
64Parameters
65----------
66
67+---------------+-----------------------------------+-----------------------------------------------+
68| Parameter | Requirement | Description |
69+===============+===================================+===============================================+
70| ``F`` | |Lambda Expression| | An expression to invoke. |
71+---------------+-----------------------------------+-----------------------------------------------+
72| |A1...An| | Any type | Invocation arguments. |
73+---------------+-----------------------------------+-----------------------------------------------+
74
75
76Expression semantics
77--------------------
78
79For any |Lambda Expression| ``f`` and arbitrary types ``a1``,... ``an``:
80
81
82.. parsed-literal::
83
84 typedef apply\ *n*\<f,a1,\ |...|\ a\ *n*\>::type t;
85 typedef apply<f,a1,\ |...|\ a\ *n*\>::type t;
86
87:Return type:
88 Any type.
89
90:Semantics:
91 Equivalent to ``typedef apply_wrap``\ *n*\ ``< lambda<f>::type,a1,... an>::type t;``.
92
93
94Example
95-------
96
97.. parsed-literal::
98
99 template< typename N1, typename N2 > struct int_plus
100 : int_<( N1::value + N2::value )>
101 {
102 };
103
104 typedef apply< int_plus<_1,_2>, int_<2>, int_<3> >::type r1;
105 typedef apply< quote\ ``2``\ <int_plus>, int_<2>, int_<3> >::type r2;
106
107 BOOST_MPL_ASSERT_RELATION( r1::value, ==, 5 );
108 BOOST_MPL_ASSERT_RELATION( r2::value, ==, 5 );
109
110
111See also
112--------
113
114|Metafunctions|, |apply_wrap|, |lambda|, |quote|, |bind|
115
116
117