]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/proto/include/boost/proto/detail/preprocessed/make_expr_funop.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / proto / include / boost / proto / detail / preprocessed / make_expr_funop.hpp
1 ///////////////////////////////////////////////////////////////////////////////
2 /// \file make_expr_funop.hpp
3 /// Contains definition of make_expr\<\>::operator() member functions.
4 //
5 // Copyright 2008 Eric Niebler. Distributed under the Boost
6 // Software License, Version 1.0. (See accompanying file
7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 template<typename This , typename A0 , typename A1>
9 struct result<This(A0 , A1)>
10 {
11 typedef
12 typename result_of::make_expr<
13 Tag
14 , Domain
15 , A0 , A1
16 >::type
17 type;
18 };
19
20
21 template<typename A0 , typename A1>
22 BOOST_FORCEINLINE
23 typename result_of::make_expr<
24 Tag
25 , Domain
26 , const A0 , const A1
27 >::type const
28 operator ()(const A0 &a0 , const A1 &a1) const
29 {
30 return proto::detail::make_expr_<
31 Tag
32 , Domain
33 , const A0 , const A1
34 >()(a0 , a1);
35 }
36 template<typename This , typename A0 , typename A1 , typename A2>
37 struct result<This(A0 , A1 , A2)>
38 {
39 typedef
40 typename result_of::make_expr<
41 Tag
42 , Domain
43 , A0 , A1 , A2
44 >::type
45 type;
46 };
47
48
49 template<typename A0 , typename A1 , typename A2>
50 BOOST_FORCEINLINE
51 typename result_of::make_expr<
52 Tag
53 , Domain
54 , const A0 , const A1 , const A2
55 >::type const
56 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2) const
57 {
58 return proto::detail::make_expr_<
59 Tag
60 , Domain
61 , const A0 , const A1 , const A2
62 >()(a0 , a1 , a2);
63 }
64 template<typename This , typename A0 , typename A1 , typename A2 , typename A3>
65 struct result<This(A0 , A1 , A2 , A3)>
66 {
67 typedef
68 typename result_of::make_expr<
69 Tag
70 , Domain
71 , A0 , A1 , A2 , A3
72 >::type
73 type;
74 };
75
76
77 template<typename A0 , typename A1 , typename A2 , typename A3>
78 BOOST_FORCEINLINE
79 typename result_of::make_expr<
80 Tag
81 , Domain
82 , const A0 , const A1 , const A2 , const A3
83 >::type const
84 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3) const
85 {
86 return proto::detail::make_expr_<
87 Tag
88 , Domain
89 , const A0 , const A1 , const A2 , const A3
90 >()(a0 , a1 , a2 , a3);
91 }
92 template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
93 struct result<This(A0 , A1 , A2 , A3 , A4)>
94 {
95 typedef
96 typename result_of::make_expr<
97 Tag
98 , Domain
99 , A0 , A1 , A2 , A3 , A4
100 >::type
101 type;
102 };
103
104
105 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
106 BOOST_FORCEINLINE
107 typename result_of::make_expr<
108 Tag
109 , Domain
110 , const A0 , const A1 , const A2 , const A3 , const A4
111 >::type const
112 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4) const
113 {
114 return proto::detail::make_expr_<
115 Tag
116 , Domain
117 , const A0 , const A1 , const A2 , const A3 , const A4
118 >()(a0 , a1 , a2 , a3 , a4);
119 }
120 template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
121 struct result<This(A0 , A1 , A2 , A3 , A4 , A5)>
122 {
123 typedef
124 typename result_of::make_expr<
125 Tag
126 , Domain
127 , A0 , A1 , A2 , A3 , A4 , A5
128 >::type
129 type;
130 };
131
132
133 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
134 BOOST_FORCEINLINE
135 typename result_of::make_expr<
136 Tag
137 , Domain
138 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
139 >::type const
140 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5) const
141 {
142 return proto::detail::make_expr_<
143 Tag
144 , Domain
145 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
146 >()(a0 , a1 , a2 , a3 , a4 , a5);
147 }
148 template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
149 struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
150 {
151 typedef
152 typename result_of::make_expr<
153 Tag
154 , Domain
155 , A0 , A1 , A2 , A3 , A4 , A5 , A6
156 >::type
157 type;
158 };
159
160
161 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
162 BOOST_FORCEINLINE
163 typename result_of::make_expr<
164 Tag
165 , Domain
166 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
167 >::type const
168 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6) const
169 {
170 return proto::detail::make_expr_<
171 Tag
172 , Domain
173 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
174 >()(a0 , a1 , a2 , a3 , a4 , a5 , a6);
175 }
176 template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
177 struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
178 {
179 typedef
180 typename result_of::make_expr<
181 Tag
182 , Domain
183 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
184 >::type
185 type;
186 };
187
188
189 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
190 BOOST_FORCEINLINE
191 typename result_of::make_expr<
192 Tag
193 , Domain
194 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
195 >::type const
196 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6 , const A7 &a7) const
197 {
198 return proto::detail::make_expr_<
199 Tag
200 , Domain
201 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
202 >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
203 }
204 template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
205 struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
206 {
207 typedef
208 typename result_of::make_expr<
209 Tag
210 , Domain
211 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
212 >::type
213 type;
214 };
215
216
217 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
218 BOOST_FORCEINLINE
219 typename result_of::make_expr<
220 Tag
221 , Domain
222 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
223 >::type const
224 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6 , const A7 &a7 , const A8 &a8) const
225 {
226 return proto::detail::make_expr_<
227 Tag
228 , Domain
229 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
230 >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
231 }
232 template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
233 struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
234 {
235 typedef
236 typename result_of::make_expr<
237 Tag
238 , Domain
239 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
240 >::type
241 type;
242 };
243
244
245 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
246 BOOST_FORCEINLINE
247 typename result_of::make_expr<
248 Tag
249 , Domain
250 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
251 >::type const
252 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6 , const A7 &a7 , const A8 &a8 , const A9 &a9) const
253 {
254 return proto::detail::make_expr_<
255 Tag
256 , Domain
257 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
258 >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
259 }