actor_operator_10.hpp 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567
  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>
  8. struct result<This(A0)>
  9. : result<This(typename detail::result_type_deduction_helper<A0>::type)>
  10. {};
  11. template <typename This, typename A0> struct result<This(A0 &)> : result_of::actor<proto_base_expr, A0 &> {}; template <typename A0> typename result_of::actor<proto_base_expr, A0 &>::type operator()(A0 & a0) const { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return phoenix::eval(*this, phoenix::context(env, default_actions())); } template <typename A0> typename result_of::actor<proto_base_expr, A0 &>::type operator()(A0 & a0) { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return phoenix::eval(*this, phoenix::context(env, default_actions())); } template <typename This, typename A0> struct result<This(A0 const&)> : result_of::actor<proto_base_expr, A0 const&> {}; template <typename A0> typename result_of::actor<proto_base_expr, A0 const&>::type operator()(A0 const& a0) const { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return phoenix::eval(*this, phoenix::context(env, default_actions())); } template <typename A0> typename result_of::actor<proto_base_expr, A0 const&>::type operator()(A0 const& a0) { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return phoenix::eval(*this, phoenix::context(env, default_actions())); }
  12. template <typename This, typename A0 , typename A1>
  13. struct result<This(A0 , A1)>
  14. : result<This(typename detail::result_type_deduction_helper<A0>::type , typename detail::result_type_deduction_helper<A1>::type)>
  15. {};
  16. template <typename This, typename A0 , typename A1> struct result<This(A0 & , A1 &)> : result_of::actor<proto_base_expr, A0 & , A1 &> {}; template <typename A0 , typename A1> typename result_of::actor<proto_base_expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return phoenix::eval(*this, phoenix::context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<proto_base_expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return phoenix::eval(*this, phoenix::context(env, default_actions())); } template <typename This, typename A0 , typename A1> struct result<This(A0 & , A1 const&)> : result_of::actor<proto_base_expr, A0 & , A1 const&> {}; template <typename A0 , typename A1> typename result_of::actor<proto_base_expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 const& > env_type; env_type env = {this, a0 , a1}; return phoenix::eval(*this, phoenix::context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<proto_base_expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 & , A1 const& > env_type; env_type env = {this, a0 , a1}; return phoenix::eval(*this, phoenix::context(env, default_actions())); } template <typename This, typename A0 , typename A1> struct result<This(A0 const& , A1 &)> : result_of::actor<proto_base_expr, A0 const& , A1 &> {}; template <typename A0 , typename A1> typename result_of::actor<proto_base_expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return phoenix::eval(*this, phoenix::context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<proto_base_expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return phoenix::eval(*this, phoenix::context(env, default_actions())); } template <typename This, typename A0 , typename A1> struct result<This(A0 const& , A1 const&)> : result_of::actor<proto_base_expr, A0 const& , A1 const&> {}; template <typename A0 , typename A1> typename result_of::actor<proto_base_expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return phoenix::eval(*this, phoenix::context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<proto_base_expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return phoenix::eval(*this, phoenix::context(env, default_actions())); }
  17. template <typename This, typename A0 , typename A1 , typename A2>
  18. struct result<This(A0 , A1 , A2)>
  19. : result<This(A0 const& , A1 const& , A2 const&)>
  20. {};
  21. template <typename This, typename A0 , typename A1 , typename A2>
  22. struct result<This(A0 & , A1 & , A2 &)>
  23. : result_of::actor<proto_base_expr, A0 & , A1 & , A2 &>
  24. {};
  25. template <typename A0 , typename A1 , typename A2>
  26. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 &>::type
  27. operator()(A0 & a0 , A1 & a1 , A2 & a2)
  28. {
  29. typedef
  30. vector4<
  31. const actor<Expr> *, A0 & , A1 & , A2 &
  32. >
  33. env_type;
  34. env_type env = {this, a0 , a1 , a2};
  35. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  36. }
  37. template <typename A0 , typename A1 , typename A2>
  38. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 &>::type
  39. operator()(A0 & a0 , A1 & a1 , A2 & a2) const
  40. {
  41. typedef
  42. vector4<
  43. const actor<Expr> *, A0 & , A1 & , A2 &
  44. >
  45. env_type;
  46. env_type env = {this, a0 , a1 , a2};
  47. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  48. }
  49. template <typename A0 , typename A1 , typename A2>
  50. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const&>::type
  51. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2)
  52. {
  53. typedef
  54. vector4<
  55. const actor<Expr> *, A0 const& , A1 const& , A2 const&
  56. >
  57. env_type;
  58. env_type env = {this, a0 , a1 , a2};
  59. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  60. }
  61. template <typename A0 , typename A1 , typename A2>
  62. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const&>::type
  63. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2) const
  64. {
  65. typedef
  66. vector4<
  67. const actor<Expr> *, A0 const& , A1 const& , A2 const&
  68. >
  69. env_type;
  70. env_type env = {this, a0 , a1 , a2};
  71. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  72. }
  73. template <typename This, typename A0 , typename A1 , typename A2 , typename A3>
  74. struct result<This(A0 , A1 , A2 , A3)>
  75. : result<This(A0 const& , A1 const& , A2 const& , A3 const&)>
  76. {};
  77. template <typename This, typename A0 , typename A1 , typename A2 , typename A3>
  78. struct result<This(A0 & , A1 & , A2 & , A3 &)>
  79. : result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 &>
  80. {};
  81. template <typename A0 , typename A1 , typename A2 , typename A3>
  82. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 &>::type
  83. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3)
  84. {
  85. typedef
  86. vector5<
  87. const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
  88. >
  89. env_type;
  90. env_type env = {this, a0 , a1 , a2 , a3};
  91. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  92. }
  93. template <typename A0 , typename A1 , typename A2 , typename A3>
  94. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 &>::type
  95. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
  96. {
  97. typedef
  98. vector5<
  99. const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
  100. >
  101. env_type;
  102. env_type env = {this, a0 , a1 , a2 , a3};
  103. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  104. }
  105. template <typename A0 , typename A1 , typename A2 , typename A3>
  106. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
  107. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3)
  108. {
  109. typedef
  110. vector5<
  111. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
  112. >
  113. env_type;
  114. env_type env = {this, a0 , a1 , a2 , a3};
  115. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  116. }
  117. template <typename A0 , typename A1 , typename A2 , typename A3>
  118. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
  119. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
  120. {
  121. typedef
  122. vector5<
  123. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
  124. >
  125. env_type;
  126. env_type env = {this, a0 , a1 , a2 , a3};
  127. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  128. }
  129. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  130. struct result<This(A0 , A1 , A2 , A3 , A4)>
  131. : result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>
  132. {};
  133. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  134. struct result<This(A0 & , A1 & , A2 & , A3 & , A4 &)>
  135. : result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 &>
  136. {};
  137. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  138. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 &>::type
  139. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4)
  140. {
  141. typedef
  142. vector6<
  143. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
  144. >
  145. env_type;
  146. env_type env = {this, a0 , a1 , a2 , a3 , a4};
  147. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  148. }
  149. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  150. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 &>::type
  151. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
  152. {
  153. typedef
  154. vector6<
  155. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
  156. >
  157. env_type;
  158. env_type env = {this, a0 , a1 , a2 , a3 , a4};
  159. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  160. }
  161. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  162. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
  163. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4)
  164. {
  165. typedef
  166. vector6<
  167. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
  168. >
  169. env_type;
  170. env_type env = {this, a0 , a1 , a2 , a3 , a4};
  171. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  172. }
  173. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  174. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
  175. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
  176. {
  177. typedef
  178. vector6<
  179. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
  180. >
  181. env_type;
  182. env_type env = {this, a0 , a1 , a2 , a3 , a4};
  183. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  184. }
  185. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  186. struct result<This(A0 , A1 , A2 , A3 , A4 , A5)>
  187. : result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>
  188. {};
  189. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  190. struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 &)>
  191. : result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &>
  192. {};
  193. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  194. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &>::type
  195. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5)
  196. {
  197. typedef
  198. vector7<
  199. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
  200. >
  201. env_type;
  202. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
  203. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  204. }
  205. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  206. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &>::type
  207. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
  208. {
  209. typedef
  210. vector7<
  211. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
  212. >
  213. env_type;
  214. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
  215. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  216. }
  217. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  218. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
  219. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5)
  220. {
  221. typedef
  222. vector7<
  223. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
  224. >
  225. env_type;
  226. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
  227. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  228. }
  229. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  230. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
  231. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
  232. {
  233. typedef
  234. vector7<
  235. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
  236. >
  237. env_type;
  238. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
  239. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  240. }
  241. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  242. struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
  243. : result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>
  244. {};
  245. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  246. struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &)>
  247. : result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &>
  248. {};
  249. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  250. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &>::type
  251. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6)
  252. {
  253. typedef
  254. vector8<
  255. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
  256. >
  257. env_type;
  258. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
  259. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  260. }
  261. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  262. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &>::type
  263. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
  264. {
  265. typedef
  266. vector8<
  267. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
  268. >
  269. env_type;
  270. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
  271. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  272. }
  273. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  274. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
  275. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6)
  276. {
  277. typedef
  278. vector8<
  279. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
  280. >
  281. env_type;
  282. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
  283. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  284. }
  285. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  286. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
  287. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
  288. {
  289. typedef
  290. vector8<
  291. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
  292. >
  293. env_type;
  294. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
  295. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  296. }
  297. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  298. struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
  299. : result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>
  300. {};
  301. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  302. struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &)>
  303. : result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &>
  304. {};
  305. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  306. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &>::type
  307. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7)
  308. {
  309. typedef
  310. vector9<
  311. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
  312. >
  313. env_type;
  314. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
  315. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  316. }
  317. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  318. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &>::type
  319. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
  320. {
  321. typedef
  322. vector9<
  323. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
  324. >
  325. env_type;
  326. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
  327. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  328. }
  329. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  330. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
  331. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7)
  332. {
  333. typedef
  334. vector9<
  335. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
  336. >
  337. env_type;
  338. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
  339. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  340. }
  341. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  342. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
  343. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
  344. {
  345. typedef
  346. vector9<
  347. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
  348. >
  349. env_type;
  350. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
  351. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  352. }
  353. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  354. struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
  355. : result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>
  356. {};
  357. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  358. struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &)>
  359. : result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &>
  360. {};
  361. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  362. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &>::type
  363. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8)
  364. {
  365. typedef
  366. vector10<
  367. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
  368. >
  369. env_type;
  370. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
  371. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  372. }
  373. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  374. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &>::type
  375. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
  376. {
  377. typedef
  378. vector10<
  379. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
  380. >
  381. env_type;
  382. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
  383. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  384. }
  385. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  386. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
  387. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8)
  388. {
  389. typedef
  390. vector10<
  391. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
  392. >
  393. env_type;
  394. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
  395. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  396. }
  397. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  398. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
  399. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
  400. {
  401. typedef
  402. vector10<
  403. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
  404. >
  405. env_type;
  406. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
  407. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  408. }
  409. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  410. struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
  411. : result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>
  412. {};
  413. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  414. struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &)>
  415. : result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &>
  416. {};
  417. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  418. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &>::type
  419. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9)
  420. {
  421. typedef
  422. vector11<
  423. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
  424. >
  425. env_type;
  426. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
  427. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  428. }
  429. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  430. typename result_of::actor<proto_base_expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &>::type
  431. operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
  432. {
  433. typedef
  434. vector11<
  435. const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
  436. >
  437. env_type;
  438. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
  439. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  440. }
  441. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  442. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
  443. operator()(A0 const& a0 , 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)
  444. {
  445. typedef
  446. vector11<
  447. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
  448. >
  449. env_type;
  450. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
  451. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  452. }
  453. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  454. typename result_of::actor<proto_base_expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
  455. operator()(A0 const& a0 , 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) const
  456. {
  457. typedef
  458. vector11<
  459. const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
  460. >
  461. env_type;
  462. env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
  463. return phoenix::eval(*this, phoenix::context(env, default_actions()));
  464. }