2 #if !defined(BOOST_PP_IS_ITERATING)
6 #ifndef BOOST_MPL_QUOTE_HPP_INCLUDED
7 #define BOOST_MPL_QUOTE_HPP_INCLUDED
21 #if !defined(BOOST_MPL_PREPROCESSING_MODE)
29 #if defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
30 && !defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS)
31 # define BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
34 #if !defined(BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS) \
35 && defined(BOOST_MPL_CFG_NO_HAS_XXX)
36 # define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
41 #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
42 && !defined(BOOST_MPL_PREPROCESSING_MODE)
44 # define BOOST_MPL_PREPROCESSED_HEADER quote.hpp
57 #if !defined(BOOST_MPL_CFG_NO_QUOTE_TEMPLATE)
59 namespace boost {
namespace mpl {
61 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
63 template<
typename T,
bool has_type_ >
71 typedef typename T::type type;
79 template<
typename T >
80 struct quote_impl<
T,false>
85 #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
87 template<
bool >
struct quote_impl
89 template<
typename T >
struct result_
95 template<>
struct quote_impl<false>
97 template<
typename T >
struct result_
105 #define BOOST_PP_ITERATION_PARAMS_1 \
106 (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/quote.hpp>))
107 #include BOOST_PP_ITERATE()
111 #endif // BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
113 #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
114 #endif // BOOST_MPL_QUOTE_HPP_INCLUDED
119 #define i_ BOOST_PP_FRAME_ITERATION(1)
122 template< BOOST_MPL_PP_PARAMS(i_,
typename P) >
class F
123 ,
typename Tag =
void_
127 template< BOOST_MPL_PP_PARAMS(i_,
typename U) >
struct apply
128 #if defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS)
130 typedef typename quote_impl<
135 #elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
151 #endif // BOOST_PP_IS_ITERATING