/*============================================================================= Copyright (c) 2001-2014 Joel de Guzman http://spirit.sourceforge.net/ 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) =============================================================================*/ #if !defined(BOOST_SPIRIT_X3_VARIANT_FIND_SUBSTITUTE_APR_18_2014_930AM) #define BOOST_SPIRIT_X3_VARIANT_FIND_SUBSTITUTE_APR_18_2014_930AM #include #include namespace boost { namespace spirit { namespace x3 { namespace traits { template struct variant_find_substitute { // Get the type from the variant that can be a substitute for Attribute. // If none is found, just return Attribute typedef Variant variant_type; typedef typename variant_type::types types; typedef typename mpl::end::type end; typedef typename mpl::find::type iter_1; typedef typename mpl::eval_if< is_same, mpl::find_if >, mpl::identity >::type iter; typedef typename mpl::eval_if< is_same, mpl::identity, mpl::deref >::type type; }; template struct variant_find_substitute : mpl::identity {}; }}}} #endif