new_eval_10.hpp 13 KB

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