diff --git a/include/boost/iterator/iterator_categories.hpp b/include/boost/iterator/iterator_categories.hpp index d96880d..9d1edc7 100644 --- a/include/boost/iterator/iterator_categories.hpp +++ b/include/boost/iterator/iterator_categories.hpp @@ -16,7 +16,9 @@ #include #include #include -#include +#include +#include +#include #include namespace boost { @@ -167,16 +169,16 @@ namespace boost { }; #else - - template - type_traits::yes_type is_new_iter_cat(T*, BOOST_DEDUCED_TYPENAME T::traversal* = 0); - - type_traits::no_type is_new_iter_cat(...); + BOOST_MPL_HAS_XXX_TRAIT_DEF(traversal) template struct is_new_iterator_tag + : //has_traversal + mpl::if_< + is_class + , has_traversal + , mpl::bool_c >::type { - enum { value = (sizeof(is_new_iter_cat((Tag*)0)) == sizeof(type_traits::yes_type)) }; }; #endif