/*============================================================================= Copyright (c) 2001-2011 Joel de Guzman 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(FUSION_TAG_OF_09232005_0845) #define FUSION_TAG_OF_09232005_0845 #include #include #include #include #include #include #include #include #include #include #include namespace boost { template class array; // forward namespace tuples { struct null_type; template < class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 > class tuple; template struct cons; } } namespace boost { namespace fusion { struct non_fusion_tag; struct mpl_sequence_tag; namespace detail { BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag) template struct tag_of_impl : mpl::if_, mpl::identity, mpl::identity >::type {}; template struct tag_of_impl< Sequence , typename boost::enable_if >::type> { typedef typename Sequence::fusion_tag type; }; } namespace traits { template struct tag_of : boost::fusion::detail::tag_of_impl {}; } namespace detail { template struct tag_of : traits::tag_of::type> {}; } }} #endif