diff --git a/test/multiset.cpp b/test/multiset.cpp index b1dce73..e57a734 100644 --- a/test/multiset.cpp +++ b/test/multiset.cpp @@ -17,6 +17,9 @@ #include #include +#include +#include +#include MPL_TEST_CASE() { @@ -34,3 +37,32 @@ MPL_TEST_CASE() MPL_ASSERT_RELATION( (count::value), ==, 1 ); MPL_ASSERT_RELATION( (count::value), ==, 1 ); } + + +// Use a template for testing so that GCC will show us the actual types involved +template +void test() +{ + BOOST_MPL_ASSERT_RELATION( size::value, ==, 3 ); + + typedef typename end::type not_found; + BOOST_MPL_ASSERT_NOT(( is_same::type,not_found> )); + BOOST_MPL_ASSERT_NOT(( is_same::type,not_found> )); + BOOST_MPL_ASSERT_NOT(( is_same::type,not_found> )); + BOOST_MPL_ASSERT(( is_same::type,not_found> )); +}; + +MPL_TEST_CASE() +{ + typedef insert, int> set_of_1_int; + typedef begin::type iter_to_1_int; + BOOST_MPL_ASSERT(( is_same< deref::type, int > )); + + typedef multiset0<> s0; + typedef insert::type s1; + typedef insert::type s2; + typedef insert::type myset; + + test(); + test(); +}