function_ptr_10.hpp 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. /*=============================================================================
  2. Copyright (c) 2001-2007 Joel de Guzman
  3. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. ==============================================================================*/
  6. template <typename Dummy>
  7. struct function_ptr_impl<2, Dummy>
  8. {
  9. template <typename RT, typename FP>
  10. struct impl
  11. {
  12. typedef RT result_type;
  13. impl(FP fp_)
  14. : fp(fp_) {}
  15. template <typename A0 , typename A1>
  16. RT operator()(A0 & a0 , A1 & a1) const
  17. {
  18. return fp(a0 , a1);
  19. }
  20. FP fp;
  21. };
  22. };
  23. template <typename Dummy>
  24. struct function_ptr_impl<3, Dummy>
  25. {
  26. template <typename RT, typename FP>
  27. struct impl
  28. {
  29. typedef RT result_type;
  30. impl(FP fp_)
  31. : fp(fp_) {}
  32. template <typename A0 , typename A1 , typename A2>
  33. RT operator()(A0 & a0 , A1 & a1 , A2 & a2) const
  34. {
  35. return fp(a0 , a1 , a2);
  36. }
  37. FP fp;
  38. };
  39. };
  40. template <typename Dummy>
  41. struct function_ptr_impl<4, Dummy>
  42. {
  43. template <typename RT, typename FP>
  44. struct impl
  45. {
  46. typedef RT result_type;
  47. impl(FP fp_)
  48. : fp(fp_) {}
  49. template <typename A0 , typename A1 , typename A2 , typename A3>
  50. RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
  51. {
  52. return fp(a0 , a1 , a2 , a3);
  53. }
  54. FP fp;
  55. };
  56. };
  57. template <typename Dummy>
  58. struct function_ptr_impl<5, Dummy>
  59. {
  60. template <typename RT, typename FP>
  61. struct impl
  62. {
  63. typedef RT result_type;
  64. impl(FP fp_)
  65. : fp(fp_) {}
  66. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  67. RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
  68. {
  69. return fp(a0 , a1 , a2 , a3 , a4);
  70. }
  71. FP fp;
  72. };
  73. };
  74. template <typename Dummy>
  75. struct function_ptr_impl<6, Dummy>
  76. {
  77. template <typename RT, typename FP>
  78. struct impl
  79. {
  80. typedef RT result_type;
  81. impl(FP fp_)
  82. : fp(fp_) {}
  83. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  84. RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
  85. {
  86. return fp(a0 , a1 , a2 , a3 , a4 , a5);
  87. }
  88. FP fp;
  89. };
  90. };
  91. template <typename Dummy>
  92. struct function_ptr_impl<7, Dummy>
  93. {
  94. template <typename RT, typename FP>
  95. struct impl
  96. {
  97. typedef RT result_type;
  98. impl(FP fp_)
  99. : fp(fp_) {}
  100. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  101. RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
  102. {
  103. return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6);
  104. }
  105. FP fp;
  106. };
  107. };
  108. template <typename Dummy>
  109. struct function_ptr_impl<8, Dummy>
  110. {
  111. template <typename RT, typename FP>
  112. struct impl
  113. {
  114. typedef RT result_type;
  115. impl(FP fp_)
  116. : fp(fp_) {}
  117. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  118. RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
  119. {
  120. return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
  121. }
  122. FP fp;
  123. };
  124. };
  125. template <typename Dummy>
  126. struct function_ptr_impl<9, Dummy>
  127. {
  128. template <typename RT, typename FP>
  129. struct impl
  130. {
  131. typedef RT result_type;
  132. impl(FP fp_)
  133. : fp(fp_) {}
  134. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  135. RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
  136. {
  137. return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
  138. }
  139. FP fp;
  140. };
  141. };
  142. template <typename Dummy>
  143. struct function_ptr_impl<10, Dummy>
  144. {
  145. template <typename RT, typename FP>
  146. struct impl
  147. {
  148. typedef RT result_type;
  149. impl(FP fp_)
  150. : fp(fp_) {}
  151. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  152. RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
  153. {
  154. return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
  155. }
  156. FP fp;
  157. };
  158. };