diff --git a/include/boost/move/traits.hpp b/include/boost/move/traits.hpp
index b094827..ced1cdd 100644
--- a/include/boost/move/traits.hpp
+++ b/include/boost/move/traits.hpp
@@ -41,14 +41,14 @@ struct has_trivial_destructor_after_move
{};
//! By default this traits returns
-//!
boost::is_nothrow_move_constructible::value || boost::is_nothrow_move_assignable::value
.
+//! boost::is_nothrow_move_constructible::value && boost::is_nothrow_move_assignable::value
.
//! Classes with non-throwing move constructor
//! and assignment can specialize this trait to obtain some performance improvements.
template
struct has_nothrow_move
: public ::boost::move_detail::integral_constant
< bool
- , boost::is_nothrow_move_constructible::value ||
+ , boost::is_nothrow_move_constructible::value &&
boost::is_nothrow_move_assignable::value
>
{};
diff --git a/test/move.cpp b/test/move.cpp
index a48b4ef..4d6eae7 100644
--- a/test/move.cpp
+++ b/test/move.cpp
@@ -66,7 +66,6 @@ int main()
{
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
BOOST_STATIC_ASSERT((boost::has_nothrow_move::value == true));
- BOOST_STATIC_ASSERT((boost::has_nothrow_move::value == false));
BOOST_STATIC_ASSERT((boost::has_move_emulation_enabled::value == false));
BOOST_STATIC_ASSERT((boost::has_move_emulation_enabled::value == false));
BOOST_STATIC_ASSERT((boost::has_move_emulation_enabled::value == false));