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 operator ()(A0 const & a0) const10 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 operator ()(A0 const & a0,A1 const & a1) const17 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 operator ()(A0 const & a0,A1 const & a1,A2 const & a2) const24 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 operator ()(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3) const31 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 operator ()(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4) const38 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 operator ()(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5) const45 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 operator ()(A0 const & a0,A1 const & a1,A2 const & a2,A3 const & a3,A4 const & a4,A5 const & a5,A6 const & a6) const52 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 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) const59 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 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) const66 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 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) const73 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 } 78