mem_fun_ptr_eval_10.hpp 13 KB

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