diff --git a/sprout/optional/optional.hpp b/sprout/optional/optional.hpp index 3a1d121d..ac53a6c1 100644 --- a/sprout/optional/optional.hpp +++ b/sprout/optional/optional.hpp @@ -98,11 +98,15 @@ namespace sprout { : init(v.init) , val(v.is_initialized() ? holder_type(*v) : holder_type()) {} +#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ == 8 && __GNUC_PATCHLEVEL__ <= 1)) + SPROUT_CONSTEXPR optional(optional&&) = default; +#else SPROUT_CONSTEXPR optional(optional&& v) SPROUT_NOEXCEPT_EXPR(std::is_nothrow_move_constructible::value) : init(v.init) , val(v.is_initialized() ? holder_type(sprout::move(get(v))) : holder_type()) {} +#endif SPROUT_CONSTEXPR optional(T const& v) : init(true) , val(v) diff --git a/sprout/tuple/tuple/tuple_decl.hpp b/sprout/tuple/tuple/tuple_decl.hpp index f4ea904a..2e572756 100644 --- a/sprout/tuple/tuple/tuple_decl.hpp +++ b/sprout/tuple/tuple/tuple_decl.hpp @@ -42,7 +42,7 @@ namespace sprout { // : Head(v) // {} // template -// SPROUT_CONSTEXPR head_base(UHead&& v) +// explicit SPROUT_CONSTEXPR head_base(UHead&& v) // : Head(sprout::forward(v)) // {} // }; @@ -65,7 +65,7 @@ namespace sprout { : head_(v) {} template - SPROUT_CONSTEXPR head_base(UHead&& v) + explicit SPROUT_CONSTEXPR head_base(UHead&& v) : head_(sprout::forward(v)) {} }; @@ -88,7 +88,7 @@ namespace sprout { : head_(v) {} template - SPROUT_CONSTEXPR head_base(UHead&& v) + explicit SPROUT_CONSTEXPR head_base(UHead&& v) : head_(sprout::forward(v)) {} }; @@ -176,11 +176,15 @@ namespace sprout { , base_type(sprout::forward(h)) {} SPROUT_CONSTEXPR tuple_impl(tuple_impl const&) = default; +#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ == 8 && __GNUC_PATCHLEVEL__ <= 1)) + SPROUT_CONSTEXPR tuple_impl(tuple_impl&&) = default; +#else SPROUT_CONSTEXPR tuple_impl(tuple_impl&& t) SPROUT_NOEXCEPT_EXPR(std::is_nothrow_move_constructible::value && std::is_nothrow_move_constructible::value) : inherited_type(sprout::move(tail(t))) , base_type(sprout::forward(head(t))) {} +#endif template SPROUT_CONSTEXPR tuple_impl(tuple_impl const& t) : inherited_type(sprout::tuples::detail::tuple_impl::tail(t))