| Index: third_party/boost/boost/mpl/quote.hpp
|
| diff --git a/third_party/boost/boost/mpl/quote.hpp b/third_party/boost/boost/mpl/quote.hpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fbedf6c9018507f1f3fc3554e8d85f170f48ea79
|
| --- /dev/null
|
| +++ b/third_party/boost/boost/mpl/quote.hpp
|
| @@ -0,0 +1,140 @@
|
| +
|
| +#if !defined(BOOST_PP_IS_ITERATING)
|
| +
|
| +///// header body
|
| +
|
| +#ifndef BOOST_MPL_QUOTE_HPP_INCLUDED
|
| +#define BOOST_MPL_QUOTE_HPP_INCLUDED
|
| +
|
| +// Copyright Aleksey Gurtovoy 2000-2004
|
| +//
|
| +// Distributed under the Boost Software License, Version 1.0.
|
| +// (See accompanying file LICENSE_1_0.txt or copy at
|
| +// http://www.boost.org/LICENSE_1_0.txt)
|
| +//
|
| +// See http://www.boost.org/libs/mpl for documentation.
|
| +
|
| +// $Source$
|
| +// $Date: 2006-05-02 23:27:58 -0400 (Tue, 02 May 2006) $
|
| +// $Revision: 33913 $
|
| +
|
| +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
|
| +# include <boost/mpl/void.hpp>
|
| +# include <boost/mpl/aux_/has_type.hpp>
|
| +#endif
|
| +
|
| +#include <boost/mpl/aux_/config/ttp.hpp>
|
| +
|
| +#if defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
|
| +# define BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
|
| +#endif
|
| +
|
| +#if !defined(BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS) \
|
| + && defined(BOOST_MPL_CFG_NO_HAS_XXX)
|
| +# define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
|
| +#endif
|
| +
|
| +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
|
| +
|
| +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
|
| + && !defined(BOOST_MPL_PREPROCESSING_MODE)
|
| +
|
| +# define BOOST_MPL_PREPROCESSED_HEADER quote.hpp
|
| +# include <boost/mpl/aux_/include_preprocessed.hpp>
|
| +
|
| +#else
|
| +
|
| +# include <boost/mpl/limits/arity.hpp>
|
| +# include <boost/mpl/aux_/preprocessor/params.hpp>
|
| +# include <boost/mpl/aux_/config/ctps.hpp>
|
| +# include <boost/mpl/aux_/config/workaround.hpp>
|
| +
|
| +# include <boost/preprocessor/iterate.hpp>
|
| +# include <boost/preprocessor/cat.hpp>
|
| +
|
| +#if !defined(BOOST_MPL_CFG_NO_QUOTE_TEMPLATE)
|
| +
|
| +namespace boost { namespace mpl {
|
| +
|
| +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
| +
|
| +template< typename T, bool has_type_ >
|
| +struct quote_impl
|
| +// GCC has a problem with metafunction forwarding when T is a
|
| +// specialization of a template called 'type'.
|
| +# if BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4)) \
|
| + && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(0)) \
|
| + && BOOST_WORKAROUND(__GNUC_PATCHLEVEL__, BOOST_TESTED_AT(2))
|
| +{
|
| + typedef typename T::type type;
|
| +};
|
| +# else
|
| + : T
|
| +{
|
| +};
|
| +# endif
|
| +
|
| +template< typename T >
|
| +struct quote_impl<T,false>
|
| +{
|
| + typedef T type;
|
| +};
|
| +
|
| +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
| +
|
| +template< bool > struct quote_impl
|
| +{
|
| + template< typename T > struct result_
|
| + : T
|
| + {
|
| + };
|
| +};
|
| +
|
| +template<> struct quote_impl<false>
|
| +{
|
| + template< typename T > struct result_
|
| + {
|
| + typedef T type;
|
| + };
|
| +};
|
| +
|
| +#endif
|
| +
|
| +#define BOOST_PP_ITERATION_PARAMS_1 \
|
| + (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/quote.hpp>))
|
| +#include BOOST_PP_ITERATE()
|
| +
|
| +}}
|
| +
|
| +#endif // BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
|
| +
|
| +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
|
| +#endif // BOOST_MPL_QUOTE_HPP_INCLUDED
|
| +
|
| +///// iteration
|
| +
|
| +#else
|
| +#define i_ BOOST_PP_FRAME_ITERATION(1)
|
| +
|
| +template<
|
| + template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
|
| + , typename Tag = void_
|
| + >
|
| +struct BOOST_PP_CAT(quote,i_)
|
| +{
|
| + template< BOOST_MPL_PP_PARAMS(i_, typename U) > struct apply
|
| +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
| + : quote_impl<
|
| + F< BOOST_MPL_PP_PARAMS(i_, U) >
|
| + , aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value
|
| + >
|
| +#else
|
| + : quote_impl< aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value >
|
| + ::template result_< F< BOOST_MPL_PP_PARAMS(i_, U) > >
|
| +#endif
|
| + {
|
| + };
|
| +};
|
| +
|
| +#undef i_
|
| +#endif // BOOST_PP_IS_ITERATING
|
|
|