]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/mpl/doc/src/refmanual/for_each.rst
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / mpl / doc / src / refmanual / for_each.rst
CommitLineData
7c673cae
FG
1.. Algorithms/Runtime Algorithms//for_each |10
2
3for_each
4========
5
6Synopsis
7--------
8
9.. parsed-literal::
10
11 template<
12 typename Sequence
13 , typename F
14 >
15 void for_each( F f );
16
17 template<
18 typename Sequence
19 , typename TransformOp
20 , typename F
21 >
22 void for_each( F f );
23
24
25Description
26-----------
27
28``for_each`` is a family of overloaded function templates:
29
30* ``for_each<Sequence>( f )`` applies the runtime function object
31 ``f`` to every element in the |begin/end<Sequence>| range.
32
33* ``for_each<Sequence,TransformOp>( f )`` applies the runtime function
34 object ``f`` to the result of the transformation ``TransformOp`` of
35 every element in the |begin/end<Sequence>| range.
36
37
38Header
39------
40
41.. parsed-literal::
42
43 #include <boost/mpl/for_each.hpp>
44
45
46Parameters
47----------
48
49+-------------------+-----------------------------------+-----------------------------------+
50| Parameter | Requirement | Description |
51+===================+===================================+===================================+
52| ``Sequence`` | |Forward Sequence| | A sequence to iterate. |
53+-------------------+-----------------------------------+-----------------------------------+
54| ``TransformOp`` | |Lambda Expression| | A transformation. |
55+-------------------+-----------------------------------+-----------------------------------+
56| ``f`` | An |unary function object| | A runtime operation to apply. |
57+-------------------+-----------------------------------+-----------------------------------+
58
59
60Expression semantics
61--------------------
62
63For any |Forward Sequence| ``s``, |Lambda Expression| ``op`` , and an
64|unary function object| ``f``:
65
66.. parsed-literal::
67
68 for_each<s>( f );
69
70:Return type:
71 ``void``
72
73:Postcondition:
74 Equivalent to
75
76 .. parsed-literal::
77
78 typedef begin<Sequence>::type i\ :sub:`1`;
79 |value_initialized|\ < deref<i\ :sub:`1`>::type > x\ :sub:`1`;
80 f(boost::get(x\ :sub:`1`));
81
82 typedef next<i\ :sub:`1`>::type i\ :sub:`2`;
83 |value_initialized|\ < deref<i\ :sub:`2`>::type > x\ :sub:`2`;
84 f(boost::get(x\ :sub:`2`));
85 |...|
86 |value_initialized|\ < deref<i\ :sub:`n`>::type > x\ :sub:`n`;
87 f(boost::get(x\ :sub:`n`));
88 typedef next<i\ :sub:`n`>::type last;
89
90 where ``n == size<s>::value`` and ``last`` is identical to
91 ``end<s>::type``; no effect if ``empty<s>::value == true``.
92
93
94.. parsed-literal::
95
96 for_each<s,op>( f );
97
98:Return type:
99 ``void``
100
101:Postcondition:
102 Equivalent to
103
104 .. parsed-literal::
105
106 for_each< transform_view<s,op> >( f );
107
108
109Complexity
110----------
111
112Linear. Exactly ``size<s>::value`` applications of ``op`` and ``f``.
113
114
115Example
116-------
117
118.. parsed-literal::
119
120 struct value_printer
121 {
122 template< typename U > void operator()(U x)
123 {
124 std::cout << x << '\\n';
125 }
126 };
127
128 int main()
129 {
130 for_each< range_c<int,0,10> >( value_printer() );
131 }
132
133
134See also
135--------
136
137|Runtime Algorithms|, |Views|, |transform_view|
138
139.. |unary function object| replace:: `unary function object <http://www.sgi.com/tech/stl/UnaryFunction.html>`__
140.. |value_initialized| replace:: `value_initialized <http://www.boost.org/libs/utility/value_init.htm>`__
141
142
143