// Copyright 2017 Peter Dimov. // Distributed under the Boost Software License, Version 1.0. #include #include #include #include #if defined(BOOST_NO_CXX11_HDR_TUPLE) BOOST_PRAGMA_MESSAGE("Skipping std::tuple_size tests for lack of ") int main() {} #else #include template void test( std::size_t x ) { BOOST_TEST_EQ( std::tuple_size< Tp >::value, x ); BOOST_TEST_EQ( std::tuple_size< typename Tp::inherited >::value, x ); } struct V { }; int main() { test< boost::tuple<> >( 0 ); test< boost::tuple >( 1 ); test< boost::tuple >( 2 ); test< boost::tuple >( 3 ); test< boost::tuple >( 4 ); test< boost::tuple >( 5 ); test< boost::tuple >( 6 ); test< boost::tuple >( 7 ); test< boost::tuple >( 8 ); test< boost::tuple >( 9 ); test< boost::tuple >( 10 ); #if !defined(BOOST_NO_CXX11_DECLTYPE) BOOST_TEST_EQ( std::tuple_size::value, 0 ); BOOST_TEST_EQ( std::tuple_size::value, 1 ); BOOST_TEST_EQ( std::tuple_size::value, 2 ); BOOST_TEST_EQ( std::tuple_size::value, 3 ); BOOST_TEST_EQ( std::tuple_size::value, 4 ); BOOST_TEST_EQ( std::tuple_size::value, 5 ); BOOST_TEST_EQ( std::tuple_size::value, 6 ); BOOST_TEST_EQ( std::tuple_size::value, 7 ); BOOST_TEST_EQ( std::tuple_size::value, 8 ); BOOST_TEST_EQ( std::tuple_size::value, 9 ); BOOST_TEST_EQ( std::tuple_size::value, 10 ); #endif return boost::report_errors(); } #endif