]> git.proxmox.com Git - ceph.git/blob - 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
1 .. Algorithms/Runtime Algorithms//for_each |10
2
3 for_each
4 ========
5
6 Synopsis
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
25 Description
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
38 Header
39 ------
40
41 .. parsed-literal::
42
43 #include <boost/mpl/for_each.hpp>
44
45
46 Parameters
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
60 Expression semantics
61 --------------------
62
63 For 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
109 Complexity
110 ----------
111
112 Linear. Exactly ``size<s>::value`` applications of ``op`` and ``f``.
113
114
115 Example
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
134 See 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 .. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
144 Distributed under the Boost Software License, Version 1.0. (See accompanying
145 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)