File indexing completed on 2025-01-18 09:41:57
0001
0002 #ifndef BOOST_MPL_TAG_HPP_INCLUDED
0003 #define BOOST_MPL_TAG_HPP_INCLUDED
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #include <boost/mpl/eval_if.hpp>
0018 #include <boost/mpl/void.hpp>
0019 #include <boost/mpl/aux_/has_tag.hpp>
0020 #include <boost/mpl/aux_/config/eti.hpp>
0021
0022 namespace boost { namespace mpl {
0023
0024 namespace aux {
0025 template< typename T > struct tag_impl
0026 {
0027 typedef typename T::tag type;
0028 };
0029 }
0030
0031 template< typename T, typename Default = void_ > struct tag
0032 #if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
0033 : if_<
0034 aux::has_tag<T>
0035 , aux::tag_impl<T>
0036 , Default
0037 >::type
0038 {
0039 #else
0040 {
0041 typedef typename eval_if<
0042 aux::has_tag<T>
0043 , aux::tag_impl<T>
0044 , Default
0045 >::type type;
0046
0047 #endif
0048 };
0049
0050 }}
0051
0052 #endif