File indexing completed on 2025-01-18 09:46:04
0001
0002 #if !BOOST_PHOENIX_IS_ITERATING
0003
0004 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0005
0006 #include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen.hpp>
0007
0008 #else
0009
0010 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0011 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/mem_fun_ptr_gen_" BOOST_PHOENIX_LIMIT_STR ".hpp")
0012 #endif
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0023 #pragma wave option(preserve: 1)
0024 #endif
0025
0026 namespace detail {
0027 template <typename Object, typename MemPtr>
0028 struct mem_fun_ptr_gen
0029 {
0030 mem_fun_ptr_gen(Object const& obj_, MemPtr ptr_)
0031 : obj(obj_)
0032 , ptr(ptr_)
0033 {}
0034
0035 typename phoenix::expression::mem_fun_ptr<Object, MemPtr>::type const
0036 operator()() const
0037 {
0038 return phoenix::expression::mem_fun_ptr<Object, MemPtr>::make(obj, ptr);
0039 }
0040
0041 #define BOOST_PHOENIX_ITERATION_PARAMS \
0042 (3, (1, BOOST_PHOENIX_MEMBER_LIMIT, \
0043 <boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp>)) \
0044
0045 #include BOOST_PHOENIX_ITERATE()
0046
0047 Object obj;
0048 MemPtr ptr;
0049
0050 };
0051
0052 struct make_mem_fun_ptr_gen
0053 : proto::callable
0054 {
0055 template<typename Sig>
0056 struct result;
0057
0058 template<typename This, typename Object, typename MemPtr>
0059 struct result<This(Object, MemPtr)>
0060 {
0061 typedef
0062 mem_fun_ptr_gen<
0063 typename remove_const<typename remove_reference<Object>::type>::type
0064 , typename remove_const<typename remove_reference<MemPtr>::type>::type
0065 >
0066 type;
0067 };
0068
0069 template<typename Object, typename MemPtr>
0070 mem_fun_ptr_gen<Object, MemPtr> operator()(Object const & obj, MemPtr ptr) const
0071 {
0072 return mem_fun_ptr_gen<Object, MemPtr>(obj, ptr);
0073 }
0074 };
0075 }
0076
0077 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0078 #pragma wave option(output: null)
0079 #endif
0080
0081 #endif
0082
0083 #else
0084 template <BOOST_PHOENIX_typename_A>
0085 typename phoenix::expression::mem_fun_ptr<
0086 Object
0087 , MemPtr
0088 , BOOST_PHOENIX_A
0089 >::type const
0090 operator()(BOOST_PHOENIX_A_const_ref_a) const
0091 {
0092 return phoenix::expression::mem_fun_ptr<
0093 Object
0094 , MemPtr
0095 , BOOST_PHOENIX_A
0096 >::make(obj, ptr, BOOST_PHOENIX_a);
0097 }
0098 #endif