diff --git a/include/boost/variant2/variant.hpp b/include/boost/variant2/variant.hpp index 7050f98..2d41583 100644 --- a/include/boost/variant2/variant.hpp +++ b/include/boost/variant2/variant.hpp @@ -83,6 +83,14 @@ template struct variant_size: variant_size { }; +template struct variant_size: variant_size +{ +}; + +template struct variant_size: variant_size +{ +}; + #if !defined(BOOST_NO_CXX14_VARIABLE_TEMPLATES) template /*inline*/ constexpr std::size_t variant_size_v = variant_size::value; diff --git a/test/variant_size.cpp b/test/variant_size.cpp index b348418..81e63ac 100644 --- a/test/variant_size.cpp +++ b/test/variant_size.cpp @@ -25,40 +25,80 @@ int main() BOOST_TEST_EQ( (variant_size volatile>::value), 0 ); BOOST_TEST_EQ( (variant_size const volatile>::value), 0 ); + BOOST_TEST_EQ( (variant_size&>::value), 0 ); + BOOST_TEST_EQ( (variant_size const&>::value), 0 ); + BOOST_TEST_EQ( (variant_size&&>::value), 0 ); + BOOST_TEST_EQ( (variant_size const&&>::value), 0 ); + BOOST_TEST_EQ( (variant_size>::value), 1 ); BOOST_TEST_EQ( (variant_size const>::value), 1 ); BOOST_TEST_EQ( (variant_size volatile>::value), 1 ); BOOST_TEST_EQ( (variant_size const volatile>::value), 1 ); + BOOST_TEST_EQ( (variant_size&>::value), 1 ); + BOOST_TEST_EQ( (variant_size const&>::value), 1 ); + BOOST_TEST_EQ( (variant_size&&>::value), 1 ); + BOOST_TEST_EQ( (variant_size const&&>::value), 1 ); + BOOST_TEST_EQ( (variant_size>::value), 2 ); BOOST_TEST_EQ( (variant_size const>::value), 2 ); BOOST_TEST_EQ( (variant_size volatile>::value), 2 ); BOOST_TEST_EQ( (variant_size const volatile>::value), 2 ); + BOOST_TEST_EQ( (variant_size&>::value), 2 ); + BOOST_TEST_EQ( (variant_size const&>::value), 2 ); + BOOST_TEST_EQ( (variant_size&&>::value), 2 ); + BOOST_TEST_EQ( (variant_size const&&>::value), 2 ); + BOOST_TEST_EQ( (variant_size>::value), 3 ); BOOST_TEST_EQ( (variant_size const>::value), 3 ); BOOST_TEST_EQ( (variant_size volatile>::value), 3 ); BOOST_TEST_EQ( (variant_size const volatile>::value), 3 ); + BOOST_TEST_EQ( (variant_size&>::value), 3 ); + BOOST_TEST_EQ( (variant_size const&>::value), 3 ); + BOOST_TEST_EQ( (variant_size&&>::value), 3 ); + BOOST_TEST_EQ( (variant_size const&&>::value), 3 ); + BOOST_TEST_EQ( (variant_size>::value), 4 ); BOOST_TEST_EQ( (variant_size const>::value), 4 ); BOOST_TEST_EQ( (variant_size volatile>::value), 4 ); BOOST_TEST_EQ( (variant_size const volatile>::value), 4 ); + BOOST_TEST_EQ( (variant_size&>::value), 4 ); + BOOST_TEST_EQ( (variant_size const&>::value), 4 ); + BOOST_TEST_EQ( (variant_size&&>::value), 4 ); + BOOST_TEST_EQ( (variant_size const&&>::value), 4 ); + variant_size(); variant_size(); variant_size(); variant_size(); + variant_size(); + variant_size(); + variant_size(); + variant_size(); + BOOST_TEST_TRAIT_FALSE((mp_valid)); BOOST_TEST_TRAIT_FALSE((mp_valid)); BOOST_TEST_TRAIT_FALSE((mp_valid)); BOOST_TEST_TRAIT_FALSE((mp_valid)); + BOOST_TEST_TRAIT_FALSE((mp_valid)); + BOOST_TEST_TRAIT_FALSE((mp_valid)); + BOOST_TEST_TRAIT_FALSE((mp_valid)); + BOOST_TEST_TRAIT_FALSE((mp_valid)); + BOOST_TEST_TRAIT_TRUE((mp_valid>)); BOOST_TEST_TRAIT_TRUE((mp_valid const>)); BOOST_TEST_TRAIT_TRUE((mp_valid volatile>)); BOOST_TEST_TRAIT_TRUE((mp_valid const volatile>)); + BOOST_TEST_TRAIT_TRUE((mp_valid&>)); + BOOST_TEST_TRAIT_TRUE((mp_valid const&>)); + BOOST_TEST_TRAIT_TRUE((mp_valid&&>)); + BOOST_TEST_TRAIT_TRUE((mp_valid const&&>)); + return boost::report_errors(); }