/* 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_NESTED_XXX_IF_NOT_PH_HPP #define BOOST_FLYWEIGHT_DETAIL_NESTED_XXX_IF_NOT_PH_HPP #if defined(_MSC_VER) #pragma once #endif #include #include /* nested_##name##_if_not_placeholder_expression::type is T::name unless * T is an MPL placeholder expression, in which case it defaults to int. */ #define BOOST_FLYWEIGHT_NESTED_XXX_IF_NOT_PLACEHOLDER_EXPRESSION_DEF(name) \ struct nested_##name##_if_not_placeholder_expression_helper \ { \ typedef int name; \ }; \ \ template \ struct nested_##name##_if_not_placeholder_expression \ { \ typedef typename boost::mpl::if_< \ boost::flyweights::detail::is_placeholder_expression, \ nested_##name##_if_not_placeholder_expression_helper, \ T \ >::type::name type; \ }; #endif