// Copyright 2017 Peter Dimov. // Distributed under the Boost Software License, Version 1.0. #include #include #include #include #include #if defined(BOOST_NO_CXX11_HDR_TUPLE) BOOST_PRAGMA_MESSAGE("Skipping std::tuple_element tests for lack of ") int main() {} #else #include template void test() { BOOST_TEST_TRAIT_TRUE((boost::is_same::type, E>)); typedef typename Tp::inherited Tp2; BOOST_TEST_TRAIT_TRUE((boost::is_same::type, E>)); } template struct X { }; int main() { test const>, 0, X<0> const>(); test const, X<1> const>, 0, X<0> const>(); test const, X<1> const>, 1, X<1> const>(); test const, X<1> const, X<2> const>, 0, X<0> const>(); test const, X<1> const, X<2> const>, 1, X<1> const>(); test const, X<1> const, X<2> const>, 2, X<2> const>(); test const, X<1> const, X<2> const, X<3> const>, 0, X<0> const>(); test const, X<1> const, X<2> const, X<3> const>, 1, X<1> const>(); test const, X<1> const, X<2> const, X<3> const>, 2, X<2> const>(); test const, X<1> const, X<2> const, X<3> const>, 3, X<3> const>(); test const, X<1> const, X<2> const, X<3> const, X<4> const>, 0, X<0> const>(); test const, X<1> const, X<2> const, X<3> const, X<4> const>, 1, X<1> const>(); test const, X<1> const, X<2> const, X<3> const, X<4> const>, 2, X<2> const>(); test const, X<1> const, X<2> const, X<3> const, X<4> const>, 3, X<3> const>(); test const, X<1> const, X<2> const, X<3> const, X<4> const>, 4, X<4> const>(); return boost::report_errors(); } #endif