// Copyright 2017 Peter Dimov. // // 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 #include #include #include #include #include #include using namespace boost::variant2; using namespace boost::mp11; template using var_alt_t = variant_alternative_t; int main() { BOOST_TEST_TRAIT_TRUE((std::is_same>, void>)); BOOST_TEST_TRAIT_TRUE((std::is_same const>, void const>)); BOOST_TEST_TRAIT_TRUE((std::is_same volatile>, void volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same const volatile>, void const volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same>, void>)); BOOST_TEST_TRAIT_TRUE((std::is_same const>, void const>)); BOOST_TEST_TRAIT_TRUE((std::is_same volatile>, void volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same const volatile>, void const volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same>, int>)); BOOST_TEST_TRAIT_TRUE((std::is_same const>, int const>)); BOOST_TEST_TRAIT_TRUE((std::is_same volatile>, int volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same const volatile>, int const volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same>, void>)); BOOST_TEST_TRAIT_TRUE((std::is_same const>, void const>)); BOOST_TEST_TRAIT_TRUE((std::is_same volatile>, void volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same const volatile>, void const volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same>, int>)); BOOST_TEST_TRAIT_TRUE((std::is_same const>, int const>)); BOOST_TEST_TRAIT_TRUE((std::is_same volatile>, int volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same const volatile>, int const volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same>, float>)); BOOST_TEST_TRAIT_TRUE((std::is_same const>, float const>)); BOOST_TEST_TRAIT_TRUE((std::is_same volatile>, float volatile>)); BOOST_TEST_TRAIT_TRUE((std::is_same const volatile>, float const volatile>)); variant_alternative<0, void>(); variant_alternative<0, void const>(); variant_alternative<0, void volatile>(); variant_alternative<0, void const volatile>(); variant_alternative<0, variant<>>(); variant_alternative<0, variant<> const>(); variant_alternative<0, variant<> volatile>(); variant_alternative<0, variant<> const volatile>(); variant_alternative<1, variant>(); variant_alternative<1, variant const>(); variant_alternative<1, variant volatile>(); variant_alternative<1, variant const volatile>(); BOOST_TEST_TRAIT_FALSE((mp_valid, void>)); BOOST_TEST_TRAIT_FALSE((mp_valid, void const>)); BOOST_TEST_TRAIT_FALSE((mp_valid, void volatile>)); BOOST_TEST_TRAIT_FALSE((mp_valid, void const volatile>)); BOOST_TEST_TRAIT_FALSE((mp_valid, variant<>>)); BOOST_TEST_TRAIT_FALSE((mp_valid, variant<> const>)); BOOST_TEST_TRAIT_FALSE((mp_valid, variant<> volatile>)); BOOST_TEST_TRAIT_FALSE((mp_valid, variant<> const volatile>)); BOOST_TEST_TRAIT_TRUE((mp_valid, variant>)); BOOST_TEST_TRAIT_TRUE((mp_valid, variant const>)); BOOST_TEST_TRAIT_TRUE((mp_valid, variant volatile>)); BOOST_TEST_TRAIT_TRUE((mp_valid, variant const volatile>)); BOOST_TEST_TRAIT_FALSE((mp_valid, variant>)); BOOST_TEST_TRAIT_FALSE((mp_valid, variant const>)); BOOST_TEST_TRAIT_FALSE((mp_valid, variant volatile>)); BOOST_TEST_TRAIT_FALSE((mp_valid, variant const volatile>)); return boost::report_errors(); }