]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/proto/include/boost/proto/detail/preprocessed/make_expr.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / proto / include / boost / proto / detail / preprocessed / make_expr.hpp
1 ///////////////////////////////////////////////////////////////////////////////
2 /// \file make_expr.hpp
3 /// Contains overloads of make_expr() free function.
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
9
10 template<typename Tag , typename A0 , typename A1>
11 BOOST_FORCEINLINE
12 typename lazy_disable_if<
13 is_domain<A0>
14 , result_of::make_expr<
15 Tag
16 , const A0 , const A1
17 >
18 >::type const
19 make_expr(const A0 &a0 , const A1 &a1)
20 {
21 return proto::detail::make_expr_<
22 Tag
23 , deduce_domain
24 , const A0 , const A1
25 >()(a0 , a1);
26 }
27
28
29 template<typename Tag, typename Domain , typename C0 , typename C1>
30 BOOST_FORCEINLINE
31 typename result_of::make_expr<
32 Tag
33 , Domain
34 , const C0 , const C1
35 >::type const
36 make_expr(const C0 &c0 , const C1 &c1)
37 {
38 return proto::detail::make_expr_<
39 Tag
40 , Domain
41 , const C0 , const C1
42 >()(c0 , c1);
43 }
44
45
46 template<typename Tag , typename A0 , typename A1 , typename A2>
47 BOOST_FORCEINLINE
48 typename lazy_disable_if<
49 is_domain<A0>
50 , result_of::make_expr<
51 Tag
52 , const A0 , const A1 , const A2
53 >
54 >::type const
55 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2)
56 {
57 return proto::detail::make_expr_<
58 Tag
59 , deduce_domain
60 , const A0 , const A1 , const A2
61 >()(a0 , a1 , a2);
62 }
63
64
65 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2>
66 BOOST_FORCEINLINE
67 typename result_of::make_expr<
68 Tag
69 , Domain
70 , const C0 , const C1 , const C2
71 >::type const
72 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2)
73 {
74 return proto::detail::make_expr_<
75 Tag
76 , Domain
77 , const C0 , const C1 , const C2
78 >()(c0 , c1 , c2);
79 }
80
81
82 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3>
83 BOOST_FORCEINLINE
84 typename lazy_disable_if<
85 is_domain<A0>
86 , result_of::make_expr<
87 Tag
88 , const A0 , const A1 , const A2 , const A3
89 >
90 >::type const
91 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3)
92 {
93 return proto::detail::make_expr_<
94 Tag
95 , deduce_domain
96 , const A0 , const A1 , const A2 , const A3
97 >()(a0 , a1 , a2 , a3);
98 }
99
100
101 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3>
102 BOOST_FORCEINLINE
103 typename result_of::make_expr<
104 Tag
105 , Domain
106 , const C0 , const C1 , const C2 , const C3
107 >::type const
108 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3)
109 {
110 return proto::detail::make_expr_<
111 Tag
112 , Domain
113 , const C0 , const C1 , const C2 , const C3
114 >()(c0 , c1 , c2 , c3);
115 }
116
117
118 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
119 BOOST_FORCEINLINE
120 typename lazy_disable_if<
121 is_domain<A0>
122 , result_of::make_expr<
123 Tag
124 , const A0 , const A1 , const A2 , const A3 , const A4
125 >
126 >::type const
127 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4)
128 {
129 return proto::detail::make_expr_<
130 Tag
131 , deduce_domain
132 , const A0 , const A1 , const A2 , const A3 , const A4
133 >()(a0 , a1 , a2 , a3 , a4);
134 }
135
136
137 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4>
138 BOOST_FORCEINLINE
139 typename result_of::make_expr<
140 Tag
141 , Domain
142 , const C0 , const C1 , const C2 , const C3 , const C4
143 >::type const
144 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4)
145 {
146 return proto::detail::make_expr_<
147 Tag
148 , Domain
149 , const C0 , const C1 , const C2 , const C3 , const C4
150 >()(c0 , c1 , c2 , c3 , c4);
151 }
152
153
154 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
155 BOOST_FORCEINLINE
156 typename lazy_disable_if<
157 is_domain<A0>
158 , result_of::make_expr<
159 Tag
160 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
161 >
162 >::type const
163 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5)
164 {
165 return proto::detail::make_expr_<
166 Tag
167 , deduce_domain
168 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
169 >()(a0 , a1 , a2 , a3 , a4 , a5);
170 }
171
172
173 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5>
174 BOOST_FORCEINLINE
175 typename result_of::make_expr<
176 Tag
177 , Domain
178 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5
179 >::type const
180 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5)
181 {
182 return proto::detail::make_expr_<
183 Tag
184 , Domain
185 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5
186 >()(c0 , c1 , c2 , c3 , c4 , c5);
187 }
188
189
190 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
191 BOOST_FORCEINLINE
192 typename lazy_disable_if<
193 is_domain<A0>
194 , result_of::make_expr<
195 Tag
196 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
197 >
198 >::type const
199 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6)
200 {
201 return proto::detail::make_expr_<
202 Tag
203 , deduce_domain
204 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
205 >()(a0 , a1 , a2 , a3 , a4 , a5 , a6);
206 }
207
208
209 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6>
210 BOOST_FORCEINLINE
211 typename result_of::make_expr<
212 Tag
213 , Domain
214 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6
215 >::type const
216 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6)
217 {
218 return proto::detail::make_expr_<
219 Tag
220 , Domain
221 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6
222 >()(c0 , c1 , c2 , c3 , c4 , c5 , c6);
223 }
224
225
226 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
227 BOOST_FORCEINLINE
228 typename lazy_disable_if<
229 is_domain<A0>
230 , result_of::make_expr<
231 Tag
232 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
233 >
234 >::type const
235 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6 , const A7 &a7)
236 {
237 return proto::detail::make_expr_<
238 Tag
239 , deduce_domain
240 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
241 >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
242 }
243
244
245 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7>
246 BOOST_FORCEINLINE
247 typename result_of::make_expr<
248 Tag
249 , Domain
250 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7
251 >::type const
252 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6 , const C7 &c7)
253 {
254 return proto::detail::make_expr_<
255 Tag
256 , Domain
257 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7
258 >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7);
259 }
260
261
262 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
263 BOOST_FORCEINLINE
264 typename lazy_disable_if<
265 is_domain<A0>
266 , result_of::make_expr<
267 Tag
268 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
269 >
270 >::type const
271 make_expr(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)
272 {
273 return proto::detail::make_expr_<
274 Tag
275 , deduce_domain
276 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
277 >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
278 }
279
280
281 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7 , typename C8>
282 BOOST_FORCEINLINE
283 typename result_of::make_expr<
284 Tag
285 , Domain
286 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8
287 >::type const
288 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6 , const C7 &c7 , const C8 &c8)
289 {
290 return proto::detail::make_expr_<
291 Tag
292 , Domain
293 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8
294 >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7 , c8);
295 }
296
297
298 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
299 BOOST_FORCEINLINE
300 typename lazy_disable_if<
301 is_domain<A0>
302 , result_of::make_expr<
303 Tag
304 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
305 >
306 >::type const
307 make_expr(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)
308 {
309 return proto::detail::make_expr_<
310 Tag
311 , deduce_domain
312 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
313 >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
314 }
315
316
317 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7 , typename C8 , typename C9>
318 BOOST_FORCEINLINE
319 typename result_of::make_expr<
320 Tag
321 , Domain
322 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 , const C9
323 >::type const
324 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6 , const C7 &c7 , const C8 &c8 , const C9 &c9)
325 {
326 return proto::detail::make_expr_<
327 Tag
328 , Domain
329 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 , const C9
330 >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7 , c8 , c9);
331 }