]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/range/test/partial_workaround.cpp
3 // Copyright Thorsten Ottosen 2003-2004. Use, modification and
4 // distribution is subject to the Boost Software License, Version
5 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
8 // For more information, see http://www.boost.org/libs/range/
11 #include <boost/config.hpp>
12 #include <boost/detail/workaround.hpp>
13 #include <boost/range/detail/implementation_help.hpp>
14 #include <boost/test/test_tools.hpp>
16 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
17 # pragma warn -8091 // suppress warning in Boost.Test
18 # pragma warn -8057 // unused argument argc/argv in Boost.Test
21 #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
22 //#define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION 1
24 #include <boost/range/iterator.hpp>
25 #include <boost/range/const_iterator.hpp>
26 #include <boost/range/size_type.hpp>
27 #include <boost/range/value_type.hpp>
28 #include <boost/range/difference_type.hpp>
30 #include <boost/range/functions.hpp>
31 #include <boost/range/detail/sfinae.hpp>
33 #include <boost/static_assert.hpp>
34 #include <boost/type_traits.hpp>
38 using namespace boost
;
41 void check_partial_workaround()
43 using namespace range_detail
;
44 using type_traits::yes_type
;
45 using type_traits::no_type
;
47 //////////////////////////////////////////////////////////////////////
49 //////////////////////////////////////////////////////////////////////
53 const wchar_t* cw_ptr
;
55 BOOST_STATIC_ASSERT( sizeof( yes_type
) == sizeof( is_string_impl( c_ptr
) ) );
56 BOOST_STATIC_ASSERT( sizeof( yes_type
) == sizeof( is_string_impl( cc_ptr
) ) );
57 BOOST_STATIC_ASSERT( sizeof( yes_type
) == sizeof( is_string_impl( w_ptr
) ) );
58 BOOST_STATIC_ASSERT( sizeof( yes_type
) == sizeof( is_string_impl( cw_ptr
) ) );
60 BOOST_STATIC_ASSERT( sizeof( yes_type
) == sizeof( is_char_ptr_impl( c_ptr
) ) );
61 BOOST_STATIC_ASSERT( sizeof( no_type
) == sizeof( is_char_ptr_impl( cc_ptr
) ) );
63 BOOST_STATIC_ASSERT( sizeof( yes_type
) == sizeof( is_wchar_t_ptr_impl( w_ptr
) ) );
64 BOOST_STATIC_ASSERT( sizeof( no_type
) == sizeof( is_wchar_t_ptr_impl( cw_ptr
) ) );
66 BOOST_STATIC_ASSERT( sizeof( yes_type
) == sizeof( is_const_char_ptr_impl( c_ptr
) ) );
67 BOOST_STATIC_ASSERT( sizeof( yes_type
) == sizeof( is_const_char_ptr_impl( cc_ptr
) ) );
69 BOOST_STATIC_ASSERT( sizeof( yes_type
) == sizeof( is_const_wchar_t_ptr_impl( w_ptr
) ) );
70 BOOST_STATIC_ASSERT( sizeof( yes_type
) == sizeof( is_const_wchar_t_ptr_impl( cw_ptr
) ) );
72 BOOST_STATIC_ASSERT(( boost::is_same
< boost::range_detail::std_container_
,
73 boost::range_detail::range
< vector
<int> >::type
>::value
));
74 BOOST_STATIC_ASSERT(( boost::is_same
< boost::range_detail::std_pair_
,
75 boost::range_detail::range
< pair
<int,int> >::type
>::value
));
76 BOOST_STATIC_ASSERT(( boost::is_same
< boost::range_detail::array_
,
77 boost::range_detail::range
< int[42] >::type
>::value
));
78 BOOST_STATIC_ASSERT(( boost::is_same
< boost::range_detail::char_ptr_
,
79 boost::range_detail::range
< char* >::type
>::value
));
80 BOOST_STATIC_ASSERT(( boost::is_same
< boost::range_detail::const_char_ptr_
,
81 boost::range_detail::range
< const char* >::type
>::value
));
82 BOOST_STATIC_ASSERT(( boost::is_same
< boost::range_detail::wchar_t_ptr_
,
83 boost::range_detail::range
< wchar_t* >::type
>::value
));
84 BOOST_STATIC_ASSERT(( boost::is_same
< boost::range_detail::const_wchar_t_ptr_
,
85 boost::range_detail::range
< const wchar_t* >::type
>::value
));
86 BOOST_STATIC_ASSERT(( boost::is_same
< boost::range_detail::std_container_
,
87 boost::range_detail::range
< vector
<int> >::type
>::value
));
91 #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
93 void check_partial_workaround()
96 // test if warnings are generated
98 std::size_t s
= boost::range_detail::array_size( "foo" );
99 BOOST_CHECK_EQUAL( s
, 4u );
104 #include <boost/test/unit_test.hpp>
105 using boost::unit_test::test_suite
;
107 test_suite
* init_unit_test_suite( int argc
, char* argv
[] )
109 test_suite
* test
= BOOST_TEST_SUITE( "Range Test Suite" );
111 test
->add( BOOST_TEST_CASE( &check_partial_workaround
) );