function_operator_10.hpp 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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 const&)>
  9. : detail::expression::function_eval<F, A0>
  10. {};
  11. template <typename A0>
  12. typename detail::expression::function_eval<F, A0>::type const
  13. operator()(A0 const& a0) const
  14. {
  15. return detail::expression::function_eval<F, A0>::make(f, a0);
  16. }
  17. template <typename This, typename A0 , typename A1>
  18. struct result<This(A0 const& , A1 const&)>
  19. : detail::expression::function_eval<F, A0 , A1>
  20. {};
  21. template <typename A0 , typename A1>
  22. typename detail::expression::function_eval<F, A0 , A1>::type const
  23. operator()(A0 const& a0 , A1 const& a1) const
  24. {
  25. return detail::expression::function_eval<F, A0 , A1>::make(f, a0 , a1);
  26. }
  27. template <typename This, typename A0 , typename A1 , typename A2>
  28. struct result<This(A0 const& , A1 const& , A2 const&)>
  29. : detail::expression::function_eval<F, A0 , A1 , A2>
  30. {};
  31. template <typename A0 , typename A1 , typename A2>
  32. typename detail::expression::function_eval<F, A0 , A1 , A2>::type const
  33. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2) const
  34. {
  35. return detail::expression::function_eval<F, A0 , A1 , A2>::make(f, a0 , a1 , a2);
  36. }
  37. template <typename This, typename A0 , typename A1 , typename A2 , typename A3>
  38. struct result<This(A0 const& , A1 const& , A2 const& , A3 const&)>
  39. : detail::expression::function_eval<F, A0 , A1 , A2 , A3>
  40. {};
  41. template <typename A0 , typename A1 , typename A2 , typename A3>
  42. typename detail::expression::function_eval<F, A0 , A1 , A2 , A3>::type const
  43. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
  44. {
  45. return detail::expression::function_eval<F, A0 , A1 , A2 , A3>::make(f, a0 , a1 , a2 , a3);
  46. }
  47. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  48. struct result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>
  49. : detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4>
  50. {};
  51. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  52. typename detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4>::type const
  53. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
  54. {
  55. return detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4>::make(f, a0 , a1 , a2 , a3 , a4);
  56. }
  57. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  58. struct result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>
  59. : detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5>
  60. {};
  61. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  62. typename detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5>::type const
  63. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
  64. {
  65. return detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5>::make(f, a0 , a1 , a2 , a3 , a4 , a5);
  66. }
  67. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  68. struct result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>
  69. : detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6>
  70. {};
  71. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  72. typename detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6>::type const
  73. operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
  74. {
  75. return detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6>::make(f, a0 , a1 , a2 , a3 , a4 , a5 , a6);
  76. }
  77. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  78. struct result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>
  79. : detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
  80. {};
  81. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  82. typename detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>::type const
  83. 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
  84. {
  85. return detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>::make(f, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
  86. }
  87. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  88. struct result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>
  89. : detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
  90. {};
  91. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  92. typename detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>::type const
  93. 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
  94. {
  95. return detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>::make(f, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
  96. }
  97. template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  98. struct result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>
  99. : detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
  100. {};
  101. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  102. typename detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>::type const
  103. 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
  104. {
  105. return detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>::make(f, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
  106. }