1 ///////////////////////////////////////////////////////////////////////////////
2 /// \file make_expr.hpp
3 /// Contains overloads of make_expr() free function.
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)
10 template<typename Tag , typename A0 , typename A1>
12 typename lazy_disable_if<
14 , result_of::make_expr<
19 make_expr(const A0 &a0 , const A1 &a1)
21 return proto::detail::make_expr_<
29 template<typename Tag, typename Domain , typename C0 , typename C1>
31 typename result_of::make_expr<
36 make_expr(const C0 &c0 , const C1 &c1)
38 return proto::detail::make_expr_<
46 template<typename Tag , typename A0 , typename A1 , typename A2>
48 typename lazy_disable_if<
50 , result_of::make_expr<
52 , const A0 , const A1 , const A2
55 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2)
57 return proto::detail::make_expr_<
60 , const A0 , const A1 , const A2
65 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2>
67 typename result_of::make_expr<
70 , const C0 , const C1 , const C2
72 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2)
74 return proto::detail::make_expr_<
77 , const C0 , const C1 , const C2
82 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3>
84 typename lazy_disable_if<
86 , result_of::make_expr<
88 , const A0 , const A1 , const A2 , const A3
91 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3)
93 return proto::detail::make_expr_<
96 , const A0 , const A1 , const A2 , const A3
97 >()(a0 , a1 , a2 , a3);
101 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3>
103 typename result_of::make_expr<
106 , const C0 , const C1 , const C2 , const C3
108 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3)
110 return proto::detail::make_expr_<
113 , const C0 , const C1 , const C2 , const C3
114 >()(c0 , c1 , c2 , c3);
118 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
120 typename lazy_disable_if<
122 , result_of::make_expr<
124 , const A0 , const A1 , const A2 , const A3 , const A4
127 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4)
129 return proto::detail::make_expr_<
132 , const A0 , const A1 , const A2 , const A3 , const A4
133 >()(a0 , a1 , a2 , a3 , a4);
137 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4>
139 typename result_of::make_expr<
142 , const C0 , const C1 , const C2 , const C3 , const C4
144 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4)
146 return proto::detail::make_expr_<
149 , const C0 , const C1 , const C2 , const C3 , const C4
150 >()(c0 , c1 , c2 , c3 , c4);
154 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
156 typename lazy_disable_if<
158 , result_of::make_expr<
160 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
163 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5)
165 return proto::detail::make_expr_<
168 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
169 >()(a0 , a1 , a2 , a3 , a4 , a5);
173 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5>
175 typename result_of::make_expr<
178 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5
180 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5)
182 return proto::detail::make_expr_<
185 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5
186 >()(c0 , c1 , c2 , c3 , c4 , c5);
190 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
192 typename lazy_disable_if<
194 , result_of::make_expr<
196 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
199 make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6)
201 return proto::detail::make_expr_<
204 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
205 >()(a0 , a1 , a2 , a3 , a4 , a5 , a6);
209 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6>
211 typename result_of::make_expr<
214 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6
216 make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6)
218 return proto::detail::make_expr_<
221 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6
222 >()(c0 , c1 , c2 , c3 , c4 , c5 , c6);
226 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
228 typename lazy_disable_if<
230 , result_of::make_expr<
232 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
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)
237 return proto::detail::make_expr_<
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);
245 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7>
247 typename result_of::make_expr<
250 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7
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)
254 return proto::detail::make_expr_<
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);
262 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
264 typename lazy_disable_if<
266 , result_of::make_expr<
268 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
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)
273 return proto::detail::make_expr_<
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);
281 template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7 , typename C8>
283 typename result_of::make_expr<
286 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8
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)
290 return proto::detail::make_expr_<
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);
298 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
300 typename lazy_disable_if<
302 , result_of::make_expr<
304 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
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)
309 return proto::detail::make_expr_<
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);
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>
319 typename result_of::make_expr<
322 , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 , const C9
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)
326 return proto::detail::make_expr_<
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);