1 ///////////////////////////////////////////////////////////////////////////////
2 /// \file make_expr_funop.hpp
3 /// Contains definition of make_expr\<\>::operator() member functions.
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)>
12 typename result_of::make_expr<
21 template<typename A0 , typename A1>
23 typename result_of::make_expr<
28 operator ()(const A0 &a0 , const A1 &a1) const
30 return proto::detail::make_expr_<
36 template<typename This , typename A0 , typename A1 , typename A2>
37 struct result<This(A0 , A1 , A2)>
40 typename result_of::make_expr<
49 template<typename A0 , typename A1 , typename A2>
51 typename result_of::make_expr<
54 , const A0 , const A1 , const A2
56 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2) const
58 return proto::detail::make_expr_<
61 , const A0 , const A1 , const A2
64 template<typename This , typename A0 , typename A1 , typename A2 , typename A3>
65 struct result<This(A0 , A1 , A2 , A3)>
68 typename result_of::make_expr<
77 template<typename A0 , typename A1 , typename A2 , typename A3>
79 typename result_of::make_expr<
82 , const A0 , const A1 , const A2 , const A3
84 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3) const
86 return proto::detail::make_expr_<
89 , const A0 , const A1 , const A2 , const A3
90 >()(a0 , a1 , a2 , a3);
92 template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
93 struct result<This(A0 , A1 , A2 , A3 , A4)>
96 typename result_of::make_expr<
99 , A0 , A1 , A2 , A3 , A4
105 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
107 typename result_of::make_expr<
110 , const A0 , const A1 , const A2 , const A3 , const A4
112 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4) const
114 return proto::detail::make_expr_<
117 , const A0 , const A1 , const A2 , const A3 , const A4
118 >()(a0 , a1 , a2 , a3 , a4);
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)>
124 typename result_of::make_expr<
127 , A0 , A1 , A2 , A3 , A4 , A5
133 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
135 typename result_of::make_expr<
138 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
140 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5) const
142 return proto::detail::make_expr_<
145 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
146 >()(a0 , a1 , a2 , a3 , a4 , a5);
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)>
152 typename result_of::make_expr<
155 , A0 , A1 , A2 , A3 , A4 , A5 , A6
161 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
163 typename result_of::make_expr<
166 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
168 operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6) const
170 return proto::detail::make_expr_<
173 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
174 >()(a0 , a1 , a2 , a3 , a4 , a5 , a6);
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)>
180 typename result_of::make_expr<
183 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
189 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
191 typename result_of::make_expr<
194 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
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
198 return proto::detail::make_expr_<
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);
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)>
208 typename result_of::make_expr<
211 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
217 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
219 typename result_of::make_expr<
222 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
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
226 return proto::detail::make_expr_<
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);
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)>
236 typename result_of::make_expr<
239 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
245 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
247 typename result_of::make_expr<
250 , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
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
254 return proto::detail::make_expr_<
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);