File indexing completed on 2025-01-18 09:50:26
0001 #if !defined(BOOST_PROTO_DONT_USE_PREPROCESSED_FILES)
0002
0003 #include <boost/proto/detail/preprocessed/deduce_domain_n.hpp>
0004
0005 #elif !defined(BOOST_PP_IS_ITERATING)
0006
0007 #define BOOST_PROTO_COMMON_DOMAIN2(Z, N, DATA) \
0008 typedef \
0009 typename common_domain2<common ## N, A ## N>::type \
0010 BOOST_PP_CAT(common, BOOST_PP_INC(N)); \
0011
0012
0013 #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
0014 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/deduce_domain_n.hpp")
0015 #endif
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
0026 #pragma wave option(preserve: 1)
0027 #endif
0028
0029 #define BOOST_PP_ITERATION_PARAMS_1 \
0030 (3, (3, BOOST_PROTO_MAX_ARITY, <boost/proto/detail/deduce_domain_n.hpp>))
0031 #include BOOST_PP_ITERATE()
0032
0033 #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
0034 #pragma wave option(output: null)
0035 #endif
0036
0037 #undef BOOST_PROTO_COMMON_DOMAIN2
0038
0039 #else
0040
0041 #define N BOOST_PP_ITERATION()
0042
0043 template<BOOST_PP_ENUM_PARAMS(N, typename A)>
0044 struct BOOST_PP_CAT(common_domain, N)
0045 {
0046 typedef A0 common1;
0047 BOOST_PP_REPEAT_FROM_TO(1, N, BOOST_PROTO_COMMON_DOMAIN2, ~)
0048 typedef BOOST_PP_CAT(common, N) type;
0049 BOOST_PROTO_ASSERT_VALID_DOMAIN(type);
0050 };
0051
0052 template<BOOST_PP_ENUM_PARAMS(N, typename E)>
0053 struct BOOST_PP_CAT(deduce_domain, N)
0054 : BOOST_PP_CAT(common_domain, N)<
0055 BOOST_PP_ENUM_BINARY_PARAMS(
0056 N
0057 , typename domain_of<E, >::type BOOST_PP_INTERCEPT
0058 )
0059 >
0060 {};
0061
0062 #undef N
0063
0064 #endif