]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpl/doc/src/refmanual/AUX_LAMBDA_SUPPORT.rst
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / mpl / doc / src / refmanual / AUX_LAMBDA_SUPPORT.rst
1 .. Macros/Broken Compiler Workarounds//BOOST_MPL_AUX_LAMBDA_SUPPORT
2
3 BOOST_MPL_AUX_LAMBDA_SUPPORT
4 ============================
5
6 Synopsis
7 --------
8
9 .. parsed-literal::
10
11 #define BOOST_MPL_AUX_LAMBDA_SUPPORT(arity, fun, params) \\
12 |unspecified-token-seq| \\
13 /\*\*/
14
15
16
17 Description
18 -----------
19
20 Enables metafunction ``fun`` for the use in |Lambda Expression|\ s on
21 compilers that don't support partial template specialization or/and
22 template template parameters. Expands to nothing on conforming compilers.
23
24
25 Header
26 ------
27
28 .. parsed-literal::
29
30 #include <boost/mpl/aux\_/lambda_support.hpp>
31
32
33 Parameters
34 ----------
35
36 +---------------+-------------------------------+---------------------------------------------------+
37 | Parameter | Requirement | Description |
38 +===============+===============================+===================================================+
39 | ``arity`` | An integral constant | The metafunction's arity, i.e. the number of its |
40 | | | template parameters, including the defaults. |
41 +---------------+-------------------------------+---------------------------------------------------+
42 | ``fun`` | A legal identifier token | The metafunction's name. |
43 +---------------+-------------------------------+---------------------------------------------------+
44 | ``params`` | A |PP-tuple| | A tuple of the metafunction's parameter names, in |
45 | | | their original order, including the defaults. |
46 +---------------+-------------------------------+---------------------------------------------------+
47
48
49 Expression semantics
50 --------------------
51
52 For any integral constant ``n``, a |Metafunction| ``fun``, and arbitrary types |A1...An|:
53
54
55 .. parsed-literal::
56
57 template< typename A1,\ |...| typename A\ *n* > struct fun
58 {
59 // |...|
60
61 BOOST_MPL_AUX_LAMBDA_SUPPORT(n, fun, (A1,\ |...|\ A\ *n*\ ))
62 };
63
64 :Precondition:
65 Appears in ``fun``\ 's scope, immediately followed by the scope-closing
66 bracket (``}``).
67
68 :Return type:
69 None.
70
71 :Semantics:
72 Expands to nothing and has no effect on conforming compilers. On compilers that
73 don't support partial template specialization or/and template template parameters
74 expands to an unspecified token sequence enabling ``fun`` to participate in
75 |Lambda Expression|\ s with the semantics described in this manual.
76
77
78 Example
79 -------
80
81 .. parsed-literal::
82
83 template< typename T, typename U = int > struct f
84 {
85 typedef T type[sizeof(U)];
86
87 BOOST_MPL_AUX_LAMBDA_SUPPORT(2, f, (T,U))
88 };
89
90 typedef apply\ ``1``\< f<char,_1>,long >::type r;
91 BOOST_MPL_ASSERT(( is_same< r, char[sizeof(long)] > ));
92
93
94 See also
95 --------
96
97 |Macros|, |Metafunctions|, |Lambda Expression|
98
99
100 .. |PP-tuple| replace:: `PP-tuple <http://www.boost.org/libs/preprocessor/doc/data/tuples.html>`__
101
102
103 .. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
104 Distributed under the Boost Software License, Version 1.0. (See accompanying
105 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)