]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/proto/doc/reference/concepts/PrimitiveTransform.xml
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / proto / doc / reference / concepts / PrimitiveTransform.xml
CommitLineData
7c673cae
FG
1<?xml version="1.0" ?>
2<!--
3 Copyright 2008 Eric Niebler
4
5 Distributed under the Boost
6 Software License, Version 1.0. (See accompanying
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 -->
9<concept name="PrimitiveTransform" category="utility">
10 <param name="Fn" role="primitive-transform-type" />
11 <param name="Expr" role="expression-type" />
12 <param name="State" role="state-type" />
13 <param name="Data" role="data-type" />
14
15 <models-sentence>
16 The type <arg num="1" /> must be a model of <self/>.
17 </models-sentence>
18
19 <description>
20 <para>
21 A PrimitiveTransform is a class type that
22 has a nested class template called
23 <computeroutput>impl&lt;&gt;</computeroutput> that takes
24 three template parameters representing an expression
25 type, a state type and a data type. Specializations
26 of the nested impl template are ternary monomorphic
27 function objects that accept expression, state, and
28 data parameters. A PrimitiveTransform is also a
29 <conceptname>PolymorphicFunctionObject</conceptname>
30 implemented in terms of the nested
31 <computeroutput>impl&lt;&gt;</computeroutput> template.
32 </para>
33 </description>
34
35 <notation variables="fn">
36 <sample-value>
37 <type name="Fn" />
38 </sample-value>
39 </notation>
40
41 <notation variables="expr">
42 <sample-value>
43 <type name="Expr" />
44 </sample-value>
45 </notation>
46
47 <notation variables="state">
48 <sample-value>
49 <type name="State" />
50 </sample-value>
51 </notation>
52
53 <notation variables="data">
54 <sample-value>
55 <type name="Data" />
56 </sample-value>
57 </notation>
58
59 <associated-type name="result_type">
60 <get-member-type name="result_type">
61 <apply-template name="typename Fn::template impl">
62 <type name="Expr"/>
63 <type name="State"/>
64 <type name="Data"/>
65 </apply-template>
66 </get-member-type>
67 <description>
68 <simpara>The return type of the overloaded function call operator.</simpara>
69 </description>
70 </associated-type>
71
72 <valid-expression name="Polymorphic Function Call 1">
73 <apply-function name="fn">
74 <sample-value>
75 <type name="Expr" />
76 </sample-value>
77 </apply-function>
78 <return-type>
79 <require-same-type testable="yes">
80 <type name="result_type"/>
81 </require-same-type>
82 </return-type>
83 <semantics>Applies the transform.</semantics>
84 </valid-expression>
85
86 <valid-expression name="Polymorphic Function Call 2">
87 <apply-function name="fn">
88 <sample-value>
89 <type name="Expr" />
90 </sample-value>
91 <sample-value>
92 <type name="State" />
93 </sample-value>
94 </apply-function>
95 <return-type>
96 <require-same-type testable="yes">
97 <type name="result_type"/>
98 </require-same-type>
99 </return-type>
100 <semantics>Applies the transform.</semantics>
101 </valid-expression>
102
103 <valid-expression name="Polymorphic Function Call 3">
104 <apply-function name="fn">
105 <sample-value>
106 <type name="Expr" />
107 </sample-value>
108 <sample-value>
109 <type name="State" />
110 </sample-value>
111 <sample-value>
112 <type name="Data" />
113 </sample-value>
114 </apply-function>
115 <return-type>
116 <require-same-type testable="yes">
117 <type name="result_type"/>
118 </require-same-type>
119 </return-type>
120 <semantics>Applies the transform.</semantics>
121 </valid-expression>
122
123 <valid-expression name="Monomorphic Function Call">
124 <apply-function name="typename Fn::template impl&lt; Expr, State, Data &gt;()">
125 <sample-value>
126 <type name="Expr" />
127 </sample-value>
128 <sample-value>
129 <type name="State" />
130 </sample-value>
131 <sample-value>
132 <type name="Data" />
133 </sample-value>
134 </apply-function>
135 <return-type>
136 <require-same-type testable="yes">
137 <type name="result_type"/>
138 </require-same-type>
139 </return-type>
140 <semantics>Applies the transform.</semantics>
141 </valid-expression>
142
143 <example-model>
144 <type name="boost::proto::_child_c&lt; 0 &gt;" />
145 </example-model>
146
147</concept>