actor_result_of_10.hpp 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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 Expr
  8. , typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void
  9. , typename Dummy = void>
  10. struct actor;
  11. template <typename Expr>
  12. struct nullary_actor_result
  13. {
  14. typedef
  15. typename boost::phoenix::evaluator::impl<
  16. Expr const&
  17. , vector2<
  18. vector1<const ::boost::phoenix::actor<Expr> *> &
  19. , default_actions
  20. > const &
  21. , proto::empty_env
  22. >::result_type
  23. type;
  24. };
  25. template <typename Expr, typename A0>
  26. struct actor<Expr, A0>
  27. {
  28. typedef
  29. typename phoenix::evaluator::
  30. impl<
  31. Expr const&
  32. , vector2<
  33. vector2<const ::boost::phoenix::actor<Expr> *, A0> &
  34. , default_actions
  35. > const &
  36. , proto::empty_env
  37. >::result_type
  38. type;
  39. };
  40. template <typename Expr, typename A0 , typename A1>
  41. struct actor<Expr, A0 , A1>
  42. {
  43. typedef
  44. typename phoenix::evaluator::
  45. impl<
  46. Expr const&
  47. , vector2<
  48. vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1> &
  49. , default_actions
  50. > const &
  51. , proto::empty_env
  52. >::result_type
  53. type;
  54. };
  55. template <typename Expr, typename A0 , typename A1 , typename A2>
  56. struct actor<Expr, A0 , A1 , A2>
  57. {
  58. typedef
  59. typename phoenix::evaluator::
  60. impl<
  61. Expr const&
  62. , vector2<
  63. vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2> &
  64. , default_actions
  65. > const &
  66. , proto::empty_env
  67. >::result_type
  68. type;
  69. };
  70. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3>
  71. struct actor<Expr, A0 , A1 , A2 , A3>
  72. {
  73. typedef
  74. typename phoenix::evaluator::
  75. impl<
  76. Expr const&
  77. , vector2<
  78. vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3> &
  79. , default_actions
  80. > const &
  81. , proto::empty_env
  82. >::result_type
  83. type;
  84. };
  85. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  86. struct actor<Expr, A0 , A1 , A2 , A3 , A4>
  87. {
  88. typedef
  89. typename phoenix::evaluator::
  90. impl<
  91. Expr const&
  92. , vector2<
  93. vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4> &
  94. , default_actions
  95. > const &
  96. , proto::empty_env
  97. >::result_type
  98. type;
  99. };
  100. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  101. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5>
  102. {
  103. typedef
  104. typename phoenix::evaluator::
  105. impl<
  106. Expr const&
  107. , vector2<
  108. vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5> &
  109. , default_actions
  110. > const &
  111. , proto::empty_env
  112. >::result_type
  113. type;
  114. };
  115. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  116. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6>
  117. {
  118. typedef
  119. typename phoenix::evaluator::
  120. impl<
  121. Expr const&
  122. , vector2<
  123. vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6> &
  124. , default_actions
  125. > const &
  126. , proto::empty_env
  127. >::result_type
  128. type;
  129. };
  130. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  131. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
  132. {
  133. typedef
  134. typename phoenix::evaluator::
  135. impl<
  136. Expr const&
  137. , vector2<
  138. vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> &
  139. , default_actions
  140. > const &
  141. , proto::empty_env
  142. >::result_type
  143. type;
  144. };
  145. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  146. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
  147. {
  148. typedef
  149. typename phoenix::evaluator::
  150. impl<
  151. Expr const&
  152. , vector2<
  153. vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> &
  154. , default_actions
  155. > const &
  156. , proto::empty_env
  157. >::result_type
  158. type;
  159. };
  160. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  161. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
  162. {
  163. typedef
  164. typename phoenix::evaluator::
  165. impl<
  166. Expr const&
  167. , vector2<
  168. vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> &
  169. , default_actions
  170. > const &
  171. , proto::empty_env
  172. >::result_type
  173. type;
  174. };