multiset.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 108 行
CPP
108 行
// 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: multiset.cpp 49268 2008-10-11 06:26:17Z agurtovoy $// $Date: 2008-10-11 02:26:17 -0400 (Sat, 11 Oct 2008) $// $Revision: 49268 $#include <boost/mpl/multiset/multiset0.hpp>//#include <boost/mpl/multiset/multiset10.hpp>#include <boost/mpl/insert.hpp>#include <boost/mpl/count.hpp>#include <boost/mpl/aux_/test.hpp>#include <boost/mpl/assert.hpp>#include <boost/mpl/size.hpp>#include <boost/mpl/find.hpp>#include <boost/config.hpp>/*struct test_data1{ typedef multiset0<> s0; typedef multiset1<int> s1; typedef multiset2<int,char&> s2; typedef multiset3<int,char&,int> s3; typedef multiset4<int,char&,int,abstract> s4;};struct test_data2{ typedef multiset<> s0; typedef multiset<int> s1; typedef multiset<int,char&> s2; typedef multiset<int,char&,int> s3; typedef multiset<int,char&,int,abstract> s4;};*/template< typename S0 >struct test_data{ typedef S0 s0; typedef typename insert<s0,int>::type s1; typedef typename insert<s1,char&>::type s2; typedef typename insert<s2,int>::type s3; typedef typename insert<s3,abstract>::type s4;};template< typename T >void count_test(){ MPL_ASSERT_RELATION( ( count<BOOST_DEDUCED_TYPENAME T::s0,int>::value ), ==, 0 ); MPL_ASSERT_RELATION( ( count<BOOST_DEDUCED_TYPENAME T::s1,int>::value ), ==, 1 ); MPL_ASSERT_RELATION( ( count<BOOST_DEDUCED_TYPENAME T::s2,int>::value ), ==, 1 ); MPL_ASSERT_RELATION( ( count<BOOST_DEDUCED_TYPENAME T::s2,char&>::value ), ==, 1 ); MPL_ASSERT_RELATION( ( count<BOOST_DEDUCED_TYPENAME T::s3,int>::value ), ==, 2 ); MPL_ASSERT_RELATION( ( count<BOOST_DEDUCED_TYPENAME T::s3,char&>::value ), ==, 1 ); MPL_ASSERT_RELATION( ( count<BOOST_DEDUCED_TYPENAME T::s4,abstract>::value ), ==, 1 );}MPL_TEST_CASE(){ //count_test<test_data1>(); //count_test<test_data2>(); //count_test< test_data< multiset<> > >(); count_test< test_data< multiset0<> > >();}/*// Use a template for testing so that GCC will show us the actual types involvedtemplate <class S>void find_test(){ BOOST_MPL_ASSERT_RELATION( size<S>::value, ==, 3 ); typedef typename end<S>::type not_found; BOOST_MPL_ASSERT_NOT(( is_same<BOOST_DEDUCED_TYPENAME find<S,int>::type,not_found> )); BOOST_MPL_ASSERT_NOT(( is_same<BOOST_DEDUCED_TYPENAME find<S,long>::type,not_found> )); BOOST_MPL_ASSERT_NOT(( is_same<BOOST_DEDUCED_TYPENAME find<S,char>::type,not_found> )); BOOST_MPL_ASSERT(( is_same<BOOST_DEDUCED_TYPENAME find<S,char*>::type,not_found> ));}*/MPL_TEST_CASE(){ // agurt 11/jun/06: multiset does not implement iterators yet! // typedef insert<multiset0<>, int>::type set_of_1_int; // typedef begin<set_of_1_int>::type iter_to_1_int; // BOOST_MPL_ASSERT(( is_same< deref<iter_to_1_int>::type, int > )); typedef multiset0<> s0; typedef insert<s0,int>::type s1; typedef insert<s1,long>::type s2; typedef insert<s2,char>::type myset; // find_test<myset>(); // find_test<myset::type>();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?