diff --git a/tests/bases.cpp b/tests/bases.cpp index c7e11a6..d5c60aa 100644 --- a/tests/bases.cpp +++ b/tests/bases.cpp @@ -102,9 +102,6 @@ TEST_CASE("Deletion", "[bases.deletion]") { }; REQUIRE(std::is_copy_constructible>::value); REQUIRE(std::is_copy_assignable>::value); - //TODO see why this fails - //REQUIRE(!std::is_move_constructible>::value); - //REQUIRE(!std::is_move_assignable>::value); } } #endif diff --git a/tl/optional.hpp b/tl/optional.hpp index 9629d9b..d01fbd9 100644 --- a/tl/optional.hpp +++ b/tl/optional.hpp @@ -483,15 +483,18 @@ struct optional_move_assign_base : optional_copy_assign_base { optional_move_assign_base(const optional_move_assign_base &rhs) = default; optional_move_assign_base(optional_move_assign_base &&rhs) = default; + optional_move_assign_base & - operator=(const optional_move_assign_base &rhs) noexcept( + operator=(const optional_move_assign_base &rhs) = default; + + optional_move_assign_base & + operator=(optional_move_assign_base &&rhs) noexcept( std::is_nothrow_move_constructible::value &&std::is_nothrow_move_assignable::value) { this->assign(std::move(rhs)); return *this; } - optional_move_assign_base & - operator=(optional_move_assign_base &&rhs) = default; + }; // optional_delete_ctor_base will conditionally delete copy and move