diff --git a/include/boost/fusion/adapted/struct/detail/define_struct.hpp b/include/boost/fusion/adapted/struct/detail/define_struct.hpp index 3217926d..015cc23c 100644 --- a/include/boost/fusion/adapted/struct/detail/define_struct.hpp +++ b/include/boost/fusion/adapted/struct/detail/define_struct.hpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -142,7 +143,8 @@ #else // BOOST_NO_CXX11_RVALUE_REFERENCES -#ifdef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#if defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) \ + || BOOST_WORKAROUND(BOOST_GCC, < 40500) #define BOOST_FUSION_DEFINE_STRUCT_MOVE_CTOR_FILLER_I( \ R, ATTRIBUTE_TUPLE_SIZE, I, ATTRIBUTE) \ @@ -163,6 +165,18 @@ ATTRIBUTES_SEQ) \ {} +#else // BOOST_NO_CXX11_DEFAULTED_FUNCTIONS + +#define BOOST_FUSION_DEFINE_STRUCT_MOVE_CTOR( \ + NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPLE_SIZE) \ + \ + BOOST_FUSION_GPU_ENABLED NAME(self_type&&) = default; + +#endif // BOOST_NO_CXX11_DEFAULTED_FUNCTIONS + +#if defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) \ + || BOOST_WORKAROUND(BOOST_GCC, < 40600) + #define BOOST_FUSION_DEFINE_STRUCT_MOVE_ASSIGN_FILLER_I( \ R, ATTRIBUTE_TUPLE_SIZE, I_, ATTRIBUTE) \ \ @@ -186,11 +200,6 @@ #else // BOOST_NO_CXX11_DEFAULTED_FUNCTIONS -#define BOOST_FUSION_DEFINE_STRUCT_MOVE_CTOR( \ - NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPLE_SIZE) \ - \ - BOOST_FUSION_GPU_ENABLED NAME(self_type&&) = default; - #define BOOST_FUSION_DEFINE_STRUCT_MOVE_ASSIGN_OP( \ ATTRIBUTES_SEQ, ATTRIBUTE_TUPLE_SIZE) \ \