diff --git a/include/boost/variant2/variant.hpp b/include/boost/variant2/variant.hpp index 26b5dac..41e06bf 100644 --- a/include/boost/variant2/variant.hpp +++ b/include/boost/variant2/variant.hpp @@ -625,7 +625,7 @@ template union variant_storage_impl rest_; -#if defined(BOOST_GCC) && (__GNUC__ >= 12) +#if defined(BOOST_GCC) && (__GNUC__ >= 7) // false positive, see https://github.com/boostorg/variant2/issues/55 # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wmaybe-uninitialized" @@ -635,7 +635,7 @@ template union variant_storage_impl= 12) +#if defined(BOOST_GCC) && (__GNUC__ >= 7) # pragma GCC diagnostic pop #endif @@ -752,10 +752,20 @@ template union variant_storage_impl rest_; +#if defined(BOOST_GCC) && (__GNUC__ >= 7) +// false positive, see https://github.com/boostorg/variant2/issues/55 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif + template constexpr variant_storage_impl( mp11::mp_size_t<0>, A&&... a ): first_( std::forward(a)... ) { } +#if defined(BOOST_GCC) && (__GNUC__ >= 7) +# pragma GCC diagnostic pop +#endif + template constexpr variant_storage_impl( mp11::mp_size_t, A&&... a ): rest_( mp11::mp_size_t(), std::forward(a)... ) { }