]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================== |
2 | Copyright (c) 2005-2010 Joel de Guzman | |
3 | Copyright (c) 2010 Thomas Heller | |
4 | ||
5 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
6 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
7 | ==============================================================================*/ | |
8 | ||
9 | ||
10 | ||
11 | ||
12 | ||
13 | ||
14 | ||
15 | template <typename This, typename A0 , typename A1, typename Context> | |
16 | struct result<This(A0 , A1, Context)> | |
17 | { | |
18 | typedef | |
19 | typename proto::detail::uncvref< | |
20 | typename proto::result_of::value<A0>::type | |
21 | >::type | |
22 | target_type; | |
23 | typedef typename target_type::type construct_type; | |
24 | typedef typename target_type::type * type; | |
25 | }; | |
26 | template <typename A0 , typename A1, typename Context> | |
27 | typename result<new_eval(A0 const& , A1 const&, Context &)>::type | |
28 | operator()( | |
29 | A0 const& | |
30 | , A1 const& a1 | |
31 | , Context const & ctx | |
32 | ) const | |
33 | { | |
34 | return | |
35 | new typename result< | |
36 | new_eval(A0 const& , A1 const&, Context &) | |
37 | >::construct_type( | |
38 | boost::phoenix::eval(a1, ctx) | |
39 | ); | |
40 | } | |
41 | ||
42 | ||
43 | ||
44 | ||
45 | ||
46 | ||
47 | ||
48 | template <typename This, typename A0 , typename A1 , typename A2, typename Context> | |
49 | struct result<This(A0 , A1 , A2, Context)> | |
50 | { | |
51 | typedef | |
52 | typename proto::detail::uncvref< | |
53 | typename proto::result_of::value<A0>::type | |
54 | >::type | |
55 | target_type; | |
56 | typedef typename target_type::type construct_type; | |
57 | typedef typename target_type::type * type; | |
58 | }; | |
59 | template <typename A0 , typename A1 , typename A2, typename Context> | |
60 | typename result<new_eval(A0 const& , A1 const& , A2 const&, Context &)>::type | |
61 | operator()( | |
62 | A0 const& | |
63 | , A1 const& a1 , A2 const& a2 | |
64 | , Context const & ctx | |
65 | ) const | |
66 | { | |
67 | return | |
68 | new typename result< | |
69 | new_eval(A0 const& , A1 const& , A2 const&, Context &) | |
70 | >::construct_type( | |
71 | boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx) | |
72 | ); | |
73 | } | |
74 | ||
75 | ||
76 | ||
77 | ||
78 | ||
79 | ||
80 | ||
81 | template <typename This, typename A0 , typename A1 , typename A2 , typename A3, typename Context> | |
82 | struct result<This(A0 , A1 , A2 , A3, Context)> | |
83 | { | |
84 | typedef | |
85 | typename proto::detail::uncvref< | |
86 | typename proto::result_of::value<A0>::type | |
87 | >::type | |
88 | target_type; | |
89 | typedef typename target_type::type construct_type; | |
90 | typedef typename target_type::type * type; | |
91 | }; | |
92 | template <typename A0 , typename A1 , typename A2 , typename A3, typename Context> | |
93 | typename result<new_eval(A0 const& , A1 const& , A2 const& , A3 const&, Context &)>::type | |
94 | operator()( | |
95 | A0 const& | |
96 | , A1 const& a1 , A2 const& a2 , A3 const& a3 | |
97 | , Context const & ctx | |
98 | ) const | |
99 | { | |
100 | return | |
101 | new typename result< | |
102 | new_eval(A0 const& , A1 const& , A2 const& , A3 const&, Context &) | |
103 | >::construct_type( | |
104 | boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) | |
105 | ); | |
106 | } | |
107 | ||
108 | ||
109 | ||
110 | ||
111 | ||
112 | ||
113 | ||
114 | template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4, typename Context> | |
115 | struct result<This(A0 , A1 , A2 , A3 , A4, Context)> | |
116 | { | |
117 | typedef | |
118 | typename proto::detail::uncvref< | |
119 | typename proto::result_of::value<A0>::type | |
120 | >::type | |
121 | target_type; | |
122 | typedef typename target_type::type construct_type; | |
123 | typedef typename target_type::type * type; | |
124 | }; | |
125 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4, typename Context> | |
126 | typename result<new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const&, Context &)>::type | |
127 | operator()( | |
128 | A0 const& | |
129 | , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 | |
130 | , Context const & ctx | |
131 | ) const | |
132 | { | |
133 | return | |
134 | new typename result< | |
135 | new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const&, Context &) | |
136 | >::construct_type( | |
137 | boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) | |
138 | ); | |
139 | } | |
140 | ||
141 | ||
142 | ||
143 | ||
144 | ||
145 | ||
146 | ||
147 | template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5, typename Context> | |
148 | struct result<This(A0 , A1 , A2 , A3 , A4 , A5, Context)> | |
149 | { | |
150 | typedef | |
151 | typename proto::detail::uncvref< | |
152 | typename proto::result_of::value<A0>::type | |
153 | >::type | |
154 | target_type; | |
155 | typedef typename target_type::type construct_type; | |
156 | typedef typename target_type::type * type; | |
157 | }; | |
158 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5, typename Context> | |
159 | typename result<new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&, Context &)>::type | |
160 | operator()( | |
161 | A0 const& | |
162 | , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 | |
163 | , Context const & ctx | |
164 | ) const | |
165 | { | |
166 | return | |
167 | new typename result< | |
168 | new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&, Context &) | |
169 | >::construct_type( | |
170 | boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) | |
171 | ); | |
172 | } | |
173 | ||
174 | ||
175 | ||
176 | ||
177 | ||
178 | ||
179 | ||
180 | template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6, typename Context> | |
181 | struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6, Context)> | |
182 | { | |
183 | typedef | |
184 | typename proto::detail::uncvref< | |
185 | typename proto::result_of::value<A0>::type | |
186 | >::type | |
187 | target_type; | |
188 | typedef typename target_type::type construct_type; | |
189 | typedef typename target_type::type * type; | |
190 | }; | |
191 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6, typename Context> | |
192 | typename result<new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&, Context &)>::type | |
193 | operator()( | |
194 | A0 const& | |
195 | , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 | |
196 | , Context const & ctx | |
197 | ) const | |
198 | { | |
199 | return | |
200 | new typename result< | |
201 | new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&, Context &) | |
202 | >::construct_type( | |
203 | boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) | |
204 | ); | |
205 | } | |
206 | ||
207 | ||
208 | ||
209 | ||
210 | ||
211 | ||
212 | ||
213 | template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7, typename Context> | |
214 | struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7, Context)> | |
215 | { | |
216 | typedef | |
217 | typename proto::detail::uncvref< | |
218 | typename proto::result_of::value<A0>::type | |
219 | >::type | |
220 | target_type; | |
221 | typedef typename target_type::type construct_type; | |
222 | typedef typename target_type::type * type; | |
223 | }; | |
224 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7, typename Context> | |
225 | typename result<new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&, Context &)>::type | |
226 | operator()( | |
227 | A0 const& | |
228 | , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 | |
229 | , Context const & ctx | |
230 | ) const | |
231 | { | |
232 | return | |
233 | new typename result< | |
234 | new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&, Context &) | |
235 | >::construct_type( | |
236 | boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) | |
237 | ); | |
238 | } | |
239 | ||
240 | ||
241 | ||
242 | ||
243 | ||
244 | ||
245 | ||
246 | template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8, typename Context> | |
247 | struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8, Context)> | |
248 | { | |
249 | typedef | |
250 | typename proto::detail::uncvref< | |
251 | typename proto::result_of::value<A0>::type | |
252 | >::type | |
253 | target_type; | |
254 | typedef typename target_type::type construct_type; | |
255 | typedef typename target_type::type * type; | |
256 | }; | |
257 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8, typename Context> | |
258 | typename result<new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&, Context &)>::type | |
259 | operator()( | |
260 | A0 const& | |
261 | , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 | |
262 | , Context const & ctx | |
263 | ) const | |
264 | { | |
265 | return | |
266 | new typename result< | |
267 | new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&, Context &) | |
268 | >::construct_type( | |
269 | boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) | |
270 | ); | |
271 | } | |
272 | ||
273 | ||
274 | ||
275 | ||
276 | ||
277 | ||
278 | ||
279 | template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9, typename Context> | |
280 | struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9, Context)> | |
281 | { | |
282 | typedef | |
283 | typename proto::detail::uncvref< | |
284 | typename proto::result_of::value<A0>::type | |
285 | >::type | |
286 | target_type; | |
287 | typedef typename target_type::type construct_type; | |
288 | typedef typename target_type::type * type; | |
289 | }; | |
290 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9, typename Context> | |
291 | typename result<new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&, Context &)>::type | |
292 | operator()( | |
293 | A0 const& | |
294 | , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 | |
295 | , Context const & ctx | |
296 | ) const | |
297 | { | |
298 | return | |
299 | new typename result< | |
300 | new_eval(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&, Context &) | |
301 | >::construct_type( | |
302 | boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) | |
303 | ); | |
304 | } |