diff --git a/optional.hpp b/optional.hpp index e8e3dd7..e1469b0 100644 --- a/optional.hpp +++ b/optional.hpp @@ -343,7 +343,7 @@ namespace tl { } // TODO conditionally disable - constexpr optional(optional&& rhs) { + constexpr optional(optional&& rhs) noexcept(std::is_nothrow_move_constructible::value) { if (rhs.has_value()) { this->m_has_value = true; new (std::addressof(this->m_value)) T (std::move(*rhs)); @@ -428,7 +428,8 @@ namespace tl { } // TODO conditionally delete, check exception guarantee - optional& operator=(optional&& rhs) noexcept { + optional& operator=(optional&& rhs) + noexcept(std::is_nothrow_move_assignable::value && std::is_nothrow_move_constructible::value) { if (has_value()) { if (rhs.has_value()) { this->m_value = std::move(rhs.m_value);