]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/phoenix/include/boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / phoenix / include / boost / phoenix / operator / detail / cpp03 / mem_fun_ptr_eval.hpp
1
2 #if !BOOST_PHOENIX_IS_ITERATING
3
4 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
5
6 #include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval.hpp>
7
8 #else
9
10 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
11 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/mem_fun_ptr_eval_" BOOST_PHOENIX_LIMIT_STR ".hpp")
12 #endif
13
14 /*==============================================================================
15 Copyright (c) 2005-2010 Joel de Guzman
16 Copyright (c) 2010 Thomas Heller
17 Copyright (c) 2016 Kohei Takahashi
18
19 Distributed under the Boost Software License, Version 1.0. (See accompanying
20 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
21 ==============================================================================*/
22
23 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
24 #pragma wave option(preserve: 1)
25 #endif
26
27 #define BOOST_PHOENIX_MEMBER_EVAL(Z, N, D) \
28 BOOST_PP_COMMA_IF(BOOST_PP_NOT(BOOST_PP_EQUAL(N, 2))) \
29 boost::phoenix::eval(BOOST_PP_CAT(a, N), ctx) \
30 /**/
31
32 #define BOOST_PHOENIX_ITERATION_PARAMS \
33 (3, (2, BOOST_PHOENIX_LIMIT, \
34 <boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp>)) \
35 /**/
36 #include BOOST_PHOENIX_ITERATE()
37 #undef BOOST_PHOENIX_MEMBER_EVAL
38
39 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
40 #pragma wave option(output: null)
41 #endif
42
43 #endif
44
45 #else // BOOST_PHOENIX_IS_ITERATING
46
47 template <typename This, BOOST_PHOENIX_typename_A, typename Context>
48 struct result<This(BOOST_PHOENIX_A, Context)>
49 : result<This(BOOST_PHOENIX_A_const_ref, Context)>
50 {};
51
52 template <typename This, BOOST_PHOENIX_typename_A, typename Context>
53 struct result<This(BOOST_PHOENIX_A_ref, Context)>
54 : result_of::mem_fun_ptr_eval<Context, BOOST_PHOENIX_A>
55 {};
56
57 template <BOOST_PHOENIX_typename_A, typename Context>
58 typename result_of::mem_fun_ptr_eval<Context, BOOST_PHOENIX_A>::type
59 operator()(
60 BOOST_PHOENIX_A_const_ref_a
61 , Context const & ctx
62 ) const
63 {
64 return
65 (
66 get_pointer(boost::phoenix::eval(a0, ctx))
67 ->*boost::phoenix::eval(a1, ctx)
68 )(
69 BOOST_PP_REPEAT_FROM_TO(
70 2
71 , BOOST_PHOENIX_ITERATION
72 , BOOST_PHOENIX_MEMBER_EVAL
73 , BOOST_PHOENIX_ITERATION
74 )
75 );
76 }
77
78 #endif