• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
operator ()(A0 const &,A1 const & a1,Context const & ctx) const28         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
operator ()(A0 const &,A1 const & a1,A2 const & a2,Context const & ctx) const61         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
operator ()(A0 const &,A1 const & a1,A2 const & a2,A3 const & a3,Context const & ctx) const94         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
operator ()(A0 const &,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,Context const & ctx) const127         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
operator ()(A0 const &,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5,Context const & ctx) const160         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
operator ()(A0 const &,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5,A6 const & a6,Context const & ctx) const193         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
operator ()(A0 const &,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5,A6 const & a6,A7 const & a7,Context const & ctx) const226         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
operator ()(A0 const &,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5,A6 const & a6,A7 const & a7,A8 const & a8,Context const & ctx) const259         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
operator ()(A0 const &,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,Context const & ctx) const292         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         }
305