construct_eval_10.hpp 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  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. : detail::result_of::target<A0>
  10. {
  11. };
  12. template <typename A0 , typename A1, typename Context>
  13. typename detail::result_of::target<A0>::type
  14. operator()(
  15. A0 const&
  16. , A1 const& a1
  17. , Context const & ctx
  18. ) const
  19. {
  20. return
  21. typename detail::result_of::target<A0>::type(
  22. boost::phoenix::eval(a1, ctx)
  23. );
  24. }
  25. template <typename This, typename A0 , typename A1 , typename A2, typename Context>
  26. struct result<This(A0 , A1 , A2, Context)>
  27. : detail::result_of::target<A0>
  28. {
  29. };
  30. template <typename A0 , typename A1 , typename A2, typename Context>
  31. typename detail::result_of::target<A0>::type
  32. operator()(
  33. A0 const&
  34. , A1 const& a1 , A2 const& a2
  35. , Context const & ctx
  36. ) const
  37. {
  38. return
  39. typename detail::result_of::target<A0>::type(
  40. boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx)
  41. );
  42. }
  43. template <typename This, typename A0 , typename A1 , typename A2 , typename A3, typename Context>
  44. struct result<This(A0 , A1 , A2 , A3, Context)>
  45. : detail::result_of::target<A0>
  46. {
  47. };
  48. template <typename A0 , typename A1 , typename A2 , typename A3, typename Context>
  49. typename detail::result_of::target<A0>::type
  50. operator()(
  51. A0 const&
  52. , A1 const& a1 , A2 const& a2 , A3 const& a3
  53. , Context const & ctx
  54. ) const
  55. {
  56. return
  57. typename detail::result_of::target<A0>::type(
  58. boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx)
  59. );
  60. }
  61. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4, typename Context>
  62. struct result<This(A0 , A1 , A2 , A3 , A4, Context)>
  63. : detail::result_of::target<A0>
  64. {
  65. };
  66. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4, typename Context>
  67. typename detail::result_of::target<A0>::type
  68. operator()(
  69. A0 const&
  70. , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
  71. , Context const & ctx
  72. ) const
  73. {
  74. return
  75. typename detail::result_of::target<A0>::type(
  76. boost::phoenix::eval(a1, ctx) , boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx)
  77. );
  78. }
  79. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5, typename Context>
  80. struct result<This(A0 , A1 , A2 , A3 , A4 , A5, Context)>
  81. : detail::result_of::target<A0>
  82. {
  83. };
  84. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5, typename Context>
  85. typename detail::result_of::target<A0>::type
  86. operator()(
  87. A0 const&
  88. , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
  89. , Context const & ctx
  90. ) const
  91. {
  92. return
  93. typename detail::result_of::target<A0>::type(
  94. 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)
  95. );
  96. }
  97. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6, typename Context>
  98. struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6, Context)>
  99. : detail::result_of::target<A0>
  100. {
  101. };
  102. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6, typename Context>
  103. typename detail::result_of::target<A0>::type
  104. operator()(
  105. A0 const&
  106. , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
  107. , Context const & ctx
  108. ) const
  109. {
  110. return
  111. typename detail::result_of::target<A0>::type(
  112. 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)
  113. );
  114. }
  115. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7, typename Context>
  116. struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7, Context)>
  117. : detail::result_of::target<A0>
  118. {
  119. };
  120. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7, typename Context>
  121. typename detail::result_of::target<A0>::type
  122. operator()(
  123. A0 const&
  124. , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
  125. , Context const & ctx
  126. ) const
  127. {
  128. return
  129. typename detail::result_of::target<A0>::type(
  130. 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)
  131. );
  132. }
  133. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8, typename Context>
  134. struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8, Context)>
  135. : detail::result_of::target<A0>
  136. {
  137. };
  138. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8, typename Context>
  139. typename detail::result_of::target<A0>::type
  140. operator()(
  141. A0 const&
  142. , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
  143. , Context const & ctx
  144. ) const
  145. {
  146. return
  147. typename detail::result_of::target<A0>::type(
  148. 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)
  149. );
  150. }
  151. 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>
  152. struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9, Context)>
  153. : detail::result_of::target<A0>
  154. {
  155. };
  156. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9, typename Context>
  157. typename detail::result_of::target<A0>::type
  158. operator()(
  159. A0 const&
  160. , 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
  161. , Context const & ctx
  162. ) const
  163. {
  164. return
  165. typename detail::result_of::target<A0>::type(
  166. 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)
  167. );
  168. }