diff --git a/include/boost/mpl/set/aux_/item.hpp b/include/boost/mpl/set/aux_/item.hpp index 4433572..e90e490 100644 --- a/include/boost/mpl/set/aux_/item.hpp +++ b/include/boost/mpl/set/aux_/item.hpp @@ -32,7 +32,7 @@ struct s_item typedef s_item item_; typedef void_ last_masked_; typedef T item_type_; - typedef Base base; + typedef typename Base::item_ base; typedef typename next< typename Base::size >::type size; typedef typename next< typename Base::order >::type order; @@ -55,7 +55,7 @@ struct s_mask typedef s_mask item_; typedef T last_masked_; typedef void_ item_type_; - typedef Base base; + typedef typename Base::item_ base; typedef typename prior< typename Base::size >::type size; BOOST_MPL_AUX_SET_OVERLOAD( aux::yes_tag, IS_MASKED, s_mask, aux::type_wrapper* ); @@ -69,7 +69,7 @@ struct s_unmask typedef s_unmask item_; typedef void_ last_masked_; typedef T item_type_; - typedef Base base; + typedef typename Base::item_ base; typedef typename next< typename Base::size >::type size; BOOST_MPL_AUX_SET_OVERLOAD( aux::no_tag, IS_MASKED, s_unmask, aux::type_wrapper* ); diff --git a/test/set_c.cpp b/test/set_c.cpp index 1a6e970..e34d86d 100644 --- a/test/set_c.cpp +++ b/test/set_c.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include @@ -59,6 +60,18 @@ MPL_TEST_CASE() MPL_ASSERT(( is_same< test::at_c::type, void_ > )); MPL_ASSERT(( is_same< test::at_c::type, void_ > )); #endif + + typedef begin::type first1; + typedef end::type last1; + MPL_ASSERT_RELATION( (distance::value), ==, 1 ); + + typedef begin::type first2; + typedef end::type last2; + MPL_ASSERT_RELATION( (distance::value), ==, 1 ); + + typedef begin::type first3; + typedef end::type last3; + MPL_ASSERT_RELATION( (distance::value), ==, 2 ); } #endif @@ -82,4 +95,12 @@ MPL_TEST_CASE() MPL_ASSERT(( is_same< test::at_c::type, void_ > )); MPL_ASSERT(( is_same< test::at_c::type, void_ > )); #endif + + typedef begin::type first1; + typedef end::type last1; + MPL_ASSERT_RELATION( (distance::value), ==, 1 ); + + typedef begin::type first2; + typedef end::type last2; + MPL_ASSERT_RELATION( (distance::value), ==, 8 ); }