| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | /* Copyright 2006-2009 Joaquin M Lopez Munoz. * 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/flyweight for library home page. */#ifndef BOOST_FLYWEIGHT_DETAIL_IS_PLACEHOLDER_EXPR_HPP#define BOOST_FLYWEIGHT_DETAIL_IS_PLACEHOLDER_EXPR_HPP#if defined(_MSC_VER)#pragma once#endif#include <boost/type_traits/is_same.hpp>#include <boost/mpl/apply.hpp>#include <boost/mpl/aux_/lambda_support.hpp>#include <boost/mpl/not.hpp>#include <boost/preprocessor/facilities/intercept.hpp>#include <boost/preprocessor/repetition/enum_params.hpp>namespace boost{namespace flyweights{namespace detail{/* is_placeholder_expression<T> indicates whether T is an * MPL placeholder expression. */template<typename T>struct is_placeholder_expression_helper{  template<    BOOST_PP_ENUM_PARAMS(      BOOST_MPL_LIMIT_METAFUNCTION_ARITY,typename BOOST_PP_INTERCEPT)  >  struct apply{    typedef int type;  };  BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_placeholder_expression_helper,(T))};template<typename T>struct is_placeholder_expression:  mpl::not_<is_same<    typename mpl::apply<      is_placeholder_expression_helper<T>,      BOOST_PP_ENUM_PARAMS(        BOOST_MPL_LIMIT_METAFUNCTION_ARITY,int BOOST_PP_INTERCEPT)    >::type,    int  > >{};} /* namespace flyweights::detail */} /* namespace flyweights */} /* namespace boost */#endif
 |