memfun_funop.hpp 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // memfun_funop.hpp
  3. // Contains overloads of memfun::operator().
  4. //
  5. // Copyright 2008 Eric Niebler. Distributed under the Boost
  6. // Software License, Version 1.0. (See accompanying file
  7. // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  8. template<typename A0>
  9. BOOST_FORCEINLINE
  10. result_type operator()(A0 const &a0) const
  11. {
  12. BOOST_PROTO_USE_GET_POINTER();
  13. return (BOOST_PROTO_GET_POINTER(V, obj) ->* pmf)(a0);
  14. }
  15. template<typename A0 , typename A1>
  16. BOOST_FORCEINLINE
  17. result_type operator()(A0 const &a0 , A1 const &a1) const
  18. {
  19. BOOST_PROTO_USE_GET_POINTER();
  20. return (BOOST_PROTO_GET_POINTER(V, obj) ->* pmf)(a0 , a1);
  21. }
  22. template<typename A0 , typename A1 , typename A2>
  23. BOOST_FORCEINLINE
  24. result_type operator()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
  25. {
  26. BOOST_PROTO_USE_GET_POINTER();
  27. return (BOOST_PROTO_GET_POINTER(V, obj) ->* pmf)(a0 , a1 , a2);
  28. }
  29. template<typename A0 , typename A1 , typename A2 , typename A3>
  30. BOOST_FORCEINLINE
  31. result_type operator()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
  32. {
  33. BOOST_PROTO_USE_GET_POINTER();
  34. return (BOOST_PROTO_GET_POINTER(V, obj) ->* pmf)(a0 , a1 , a2 , a3);
  35. }
  36. template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  37. BOOST_FORCEINLINE
  38. result_type operator()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
  39. {
  40. BOOST_PROTO_USE_GET_POINTER();
  41. return (BOOST_PROTO_GET_POINTER(V, obj) ->* pmf)(a0 , a1 , a2 , a3 , a4);
  42. }
  43. template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  44. BOOST_FORCEINLINE
  45. result_type operator()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
  46. {
  47. BOOST_PROTO_USE_GET_POINTER();
  48. return (BOOST_PROTO_GET_POINTER(V, obj) ->* pmf)(a0 , a1 , a2 , a3 , a4 , a5);
  49. }
  50. template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  51. BOOST_FORCEINLINE
  52. result_type operator()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
  53. {
  54. BOOST_PROTO_USE_GET_POINTER();
  55. return (BOOST_PROTO_GET_POINTER(V, obj) ->* pmf)(a0 , a1 , a2 , a3 , a4 , a5 , a6);
  56. }
  57. template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  58. BOOST_FORCEINLINE
  59. result_type 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
  60. {
  61. BOOST_PROTO_USE_GET_POINTER();
  62. return (BOOST_PROTO_GET_POINTER(V, obj) ->* pmf)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
  63. }
  64. template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  65. BOOST_FORCEINLINE
  66. result_type 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
  67. {
  68. BOOST_PROTO_USE_GET_POINTER();
  69. return (BOOST_PROTO_GET_POINTER(V, obj) ->* pmf)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
  70. }
  71. template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  72. BOOST_FORCEINLINE
  73. result_type 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
  74. {
  75. BOOST_PROTO_USE_GET_POINTER();
  76. return (BOOST_PROTO_GET_POINTER(V, obj) ->* pmf)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
  77. }