1 /*==============================================================================
2 Copyright (c) 2001-2010 Joel de Guzman
3 Copyright (c) 2010 Thomas Heller
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 ==============================================================================*/
9 template <typename Object, typename MemPtr>
10 struct mem_fun_ptr_gen
12 mem_fun_ptr_gen(Object const& obj_, MemPtr ptr_)
16 typename phoenix::expression::mem_fun_ptr<Object, MemPtr>::type const
19 return phoenix::expression::mem_fun_ptr<Object, MemPtr>::make(obj, ptr);
28 template <typename A0>
29 typename phoenix::expression::mem_fun_ptr<
34 operator()(A0 const& a0) const
36 return phoenix::expression::mem_fun_ptr<
40 >::make(obj, ptr, a0);
49 template <typename A0 , typename A1>
50 typename phoenix::expression::mem_fun_ptr<
55 operator()(A0 const& a0 , A1 const& a1) const
57 return phoenix::expression::mem_fun_ptr<
61 >::make(obj, ptr, a0 , a1);
70 template <typename A0 , typename A1 , typename A2>
71 typename phoenix::expression::mem_fun_ptr<
76 operator()(A0 const& a0 , A1 const& a1 , A2 const& a2) const
78 return phoenix::expression::mem_fun_ptr<
82 >::make(obj, ptr, a0 , a1 , a2);
91 template <typename A0 , typename A1 , typename A2 , typename A3>
92 typename phoenix::expression::mem_fun_ptr<
97 operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
99 return phoenix::expression::mem_fun_ptr<
103 >::make(obj, ptr, a0 , a1 , a2 , a3);
112 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
113 typename phoenix::expression::mem_fun_ptr<
116 , A0 , A1 , A2 , A3 , A4
118 operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
120 return phoenix::expression::mem_fun_ptr<
123 , A0 , A1 , A2 , A3 , A4
124 >::make(obj, ptr, a0 , a1 , a2 , a3 , a4);
133 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
134 typename phoenix::expression::mem_fun_ptr<
137 , A0 , A1 , A2 , A3 , A4 , A5
139 operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
141 return phoenix::expression::mem_fun_ptr<
144 , A0 , A1 , A2 , A3 , A4 , A5
145 >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5);
154 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
155 typename phoenix::expression::mem_fun_ptr<
158 , A0 , A1 , A2 , A3 , A4 , A5 , A6
160 operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
162 return phoenix::expression::mem_fun_ptr<
165 , A0 , A1 , A2 , A3 , A4 , A5 , A6
166 >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6);
175 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
176 typename phoenix::expression::mem_fun_ptr<
179 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
181 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
183 return phoenix::expression::mem_fun_ptr<
186 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
187 >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
196 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
197 typename phoenix::expression::mem_fun_ptr<
200 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
202 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
204 return phoenix::expression::mem_fun_ptr<
207 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
208 >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
213 struct make_mem_fun_ptr_gen
216 template<typename Sig>
218 template<typename This, typename Object, typename MemPtr>
219 struct result<This(Object, MemPtr)>
223 typename remove_const<typename remove_reference<Object>::type>::type
224 , typename remove_const<typename remove_reference<MemPtr>::type>::type
228 template<typename Object, typename MemPtr>
229 mem_fun_ptr_gen<Object, MemPtr> operator()(Object const & obj, MemPtr ptr) const
231 return mem_fun_ptr_gen<Object, MemPtr>(obj, ptr);