diff --git a/include/boost/variant2/variant.hpp b/include/boost/variant2/variant.hpp index c9c0d48..a7df153 100644 --- a/include/boost/variant2/variant.hpp +++ b/include/boost/variant2/variant.hpp @@ -359,7 +359,15 @@ template union variant_storage_impl template constexpr void emplace( mp_size_t, A&&... a ) { +#if defined( BOOST_LIBSTDCXX_VERSION ) && BOOST_LIBSTDCXX_VERSION < 50000 + + this->emplace_impl( mp_all, std::has_trivial_move_assign...>(), mp_size_t(), std::forward(a)... ); + +#else + this->emplace_impl( mp_all, std::is_trivially_move_assignable...>(), mp_size_t(), std::forward(a)... ); + +#endif } constexpr T1& get( mp_size_t<0> ) noexcept { return first_; } @@ -495,7 +503,15 @@ template struct variant_base_impl std::size_t const J = I+1; using U = mp_at_c, I>; +#if defined( BOOST_LIBSTDCXX_VERSION ) && BOOST_LIBSTDCXX_VERSION < 50000 + + this->emplace_impl( std::is_nothrow_constructible(), mp_all, std::has_trivial_move_assign...>(), std::forward(a)... ); + +#else + this->emplace_impl( std::is_nothrow_constructible(), mp_all, std::is_trivially_move_assignable...>(), std::forward(a)... ); + +#endif } };