From 49bff72be011da7ec549925a124267b6e617025b Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 11 Sep 2021 18:11:17 +0300 Subject: [PATCH] Define and use a helper macro BOOST_VARIANT2_CX14_ASSERT in constexpr functions --- include/boost/variant2/variant.hpp | 44 ++++++++++++++---------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/include/boost/variant2/variant.hpp b/include/boost/variant2/variant.hpp index 2aeb7b2..bfe8e37 100644 --- a/include/boost/variant2/variant.hpp +++ b/include/boost/variant2/variant.hpp @@ -367,15 +367,17 @@ template constexpr variant_alternative_t constexpr variant_alternative_t>& unsafe_get(variant& v) { static_assert( I < sizeof...(T), "Index out of bounds" ); -#if !defined(BOOST_NO_CXX14_CONSTEXPR) - - BOOST_ASSERT( v.index() == I ); - -#endif + BOOST_VARIANT2_CX14_ASSERT( v.index() == I ); return v._get_impl( mp11::mp_size_t() ); } @@ -384,11 +386,7 @@ template constexpr variant_alternative_t() ) ); } @@ -397,11 +395,7 @@ template constexpr variant_alternative_t() ); } @@ -410,11 +404,7 @@ template constexpr variant_alternative_t() ) ); } @@ -886,7 +876,8 @@ template struct variant_base_impl template constexpr mp11::mp_at_c, I> const& _get_impl( mp11::mp_size_t ) const noexcept { // size_t const J = I+1; - // assert( ix_ == I+1 ); + + BOOST_VARIANT2_CX14_ASSERT( ix_ == I+1 ); return st_.get( mp11::mp_size_t() ); } @@ -956,7 +947,8 @@ template struct variant_base_impl template constexpr mp11::mp_at_c, I> const& _get_impl( mp11::mp_size_t ) const noexcept { - // assert( index() == I ); + BOOST_VARIANT2_CX14_ASSERT( index() == I ); + // size_t const J = I+1; // constexpr mp_size_t j{}; @@ -1042,7 +1034,8 @@ template struct variant_base_impl template constexpr mp11::mp_at_c, I> const& _get_impl( mp11::mp_size_t ) const noexcept { // size_t const J = I+1; - // assert( ix_ == J ); + + BOOST_VARIANT2_CX14_ASSERT( ix_ == I+1 ); return st_.get( mp11::mp_size_t() ); } @@ -1168,7 +1161,8 @@ template struct variant_base_impl template constexpr mp11::mp_at_c, I> const& _get_impl( mp11::mp_size_t ) const noexcept { - // assert( index() == I ); + BOOST_VARIANT2_CX14_ASSERT( index() == I ); + // size_t const J = I+1; // constexpr mp_size_t j{}; @@ -2328,6 +2322,8 @@ template<> struct hash< ::boost::variant2::monostate > } // namespace std +#undef BOOST_VARIANT2_CX14_ASSERT + #if defined(_MSC_VER) && _MSC_VER < 1910 # pragma warning( pop ) #endif