File indexing completed on 2025-01-18 09:50:27
0001 #if !defined(BOOST_PROTO_DONT_USE_PREPROCESSED_FILES)
0002
0003 #include <boost/proto/detail/preprocessed/poly_function_funop.hpp>
0004
0005 #elif !defined(BOOST_PP_IS_ITERATING)
0006
0007 #define BOOST_PROTO_NORMALIZE_ARG(Z, N, DATA) \
0008 static_cast<typename normalize_arg<BOOST_PP_CAT(A, N) const &> \
0009 ::reference>(BOOST_PP_CAT(a, N)) \
0010
0011
0012 #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
0013 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/poly_function_funop.hpp")
0014 #endif
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
0025 #pragma wave option(preserve: 1)
0026 #endif
0027
0028 #define BOOST_PP_ITERATION_PARAMS_1 \
0029 (3, (1, BOOST_PROTO_MAX_ARITY, <boost/proto/detail/poly_function_funop.hpp>))
0030 #include BOOST_PP_ITERATE()
0031
0032 #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
0033 #pragma wave option(output: null)
0034 #endif
0035
0036 #undef BOOST_PROTO_NORMALIZE_ARG
0037
0038 #else
0039
0040 #define N BOOST_PP_ITERATION()
0041
0042 template<typename This BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)>
0043 struct result<This(BOOST_PP_ENUM_PARAMS(N, A))>
0044 : Derived::template impl<
0045 BOOST_PP_ENUM_BINARY_PARAMS(
0046 N
0047 , typename normalize_arg<A
0048 , >::type BOOST_PP_INTERCEPT
0049 )
0050 >
0051 {
0052 typedef typename result::result_type type;
0053 };
0054
0055 template<BOOST_PP_ENUM_PARAMS(N, typename A)>
0056 typename result<
0057 Derived const(
0058 BOOST_PP_ENUM_BINARY_PARAMS(N, A, const & BOOST_PP_INTERCEPT)
0059 )
0060 >::type
0061 operator ()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, const &a)) const
0062 {
0063 result<
0064 Derived const(
0065 BOOST_PP_ENUM_BINARY_PARAMS(N, A, const & BOOST_PP_INTERCEPT)
0066 )
0067 > impl;
0068
0069 return impl(BOOST_PP_ENUM(N, BOOST_PROTO_NORMALIZE_ARG, ~));
0070 }
0071
0072 #undef N
0073
0074 #endif