From d1acc969f755ae475050d26db53057b3c755728a Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Thu, 18 Oct 2018 18:51:19 +0300 Subject: [PATCH] More g++ 4.8 fixes, const&& doesn't work well --- include/boost/variant2/variant.hpp | 6 ++++++ test/variant_visit.cpp | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/include/boost/variant2/variant.hpp b/include/boost/variant2/variant.hpp index a831700..e0adac2 100644 --- a/include/boost/variant2/variant.hpp +++ b/include/boost/variant2/variant.hpp @@ -1374,6 +1374,10 @@ public: return mp_with_index( index(), L10{ this } ); } +#if !BOOST_WORKAROUND(BOOST_GCC, < 40900) + + // g++ 4.8 doesn't handle const&& particularly well + private: template struct L11 @@ -1395,6 +1399,8 @@ public: { return mp_with_index( index(), L11{ this } ); } + +#endif }; // relational operators diff --git a/test/variant_visit.cpp b/test/variant_visit.cpp index 21881d2..ed7943e 100644 --- a/test/variant_visit.cpp +++ b/test/variant_visit.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -112,7 +113,13 @@ int main() BOOST_TEST_EQ( decltype(visit(F{}, v))::value, 1 ); BOOST_TEST_EQ( decltype(visit(F{}, cv))::value, 2 ); BOOST_TEST_EQ( decltype(visit(F{}, std::move(v)))::value, 3 ); + +#if !BOOST_WORKAROUND(BOOST_GCC, < 40900) + + // g++ 4.8 doesn't handle const&& particularly well BOOST_TEST_EQ( decltype(visit(F{}, std::move(cv)))::value, 4 ); + +#endif } return boost::report_errors();