// Copyright Aleksey Gurtovoy 2003-2006 // // 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) // // See http://www.boost.org/libs/mpl for documentation. // $Id$ // $Date$ // $Revision$ #include //#include #include #include #include #include #include #include #include /* struct test_data1 { typedef multiset0<> s0; typedef multiset1 s1; typedef multiset2 s2; typedef multiset3 s3; typedef multiset4 s4; }; struct test_data2 { typedef multiset<> s0; typedef multiset s1; typedef multiset s2; typedef multiset s3; typedef multiset s4; }; */ template< typename S0 > struct test_data { typedef S0 s0; typedef typename insert::type s1; typedef typename insert::type s2; typedef typename insert::type s3; typedef typename insert::type s4; }; template< typename T > void count_test() { MPL_ASSERT_RELATION( ( count::value ), ==, 0 ); MPL_ASSERT_RELATION( ( count::value ), ==, 1 ); MPL_ASSERT_RELATION( ( count::value ), ==, 1 ); MPL_ASSERT_RELATION( ( count::value ), ==, 1 ); MPL_ASSERT_RELATION( ( count::value ), ==, 2 ); MPL_ASSERT_RELATION( ( count::value ), ==, 1 ); MPL_ASSERT_RELATION( ( count::value ), ==, 1 ); } MPL_TEST_CASE() { //count_test(); //count_test(); //count_test< test_data< multiset<> > >(); count_test< test_data< multiset0<> > >(); } /* // Use a template for testing so that GCC will show us the actual types involved template void find_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() { // agurt 11/jun/06: multiset does not implement iterators yet! // typedef insert, int>::type 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; // find_test(); // find_test(); }