$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r85410 - in trunk: boost/move libs/move/test
From: igaztanaga_at_[hidden]
Date: 2013-08-20 14:10:09
Author: igaztanaga
Date: 2013-08-20 14:10:09 EDT (Tue, 20 Aug 2013)
New Revision: 85410
URL: http://svn.boost.org/trac/boost/changeset/85410
Log:
Fix has_nothrow_move and avoid boost::has_nothrow_move<copyable>::value test as each compiler can deduce a different thing depending on its type analysis.
Text files modified: 
   trunk/boost/move/traits.hpp   |     4 ++--                                    
   trunk/libs/move/test/move.cpp |     1 -                                       
   2 files changed, 2 insertions(+), 3 deletions(-)
Modified: trunk/boost/move/traits.hpp
==============================================================================
--- trunk/boost/move/traits.hpp	Tue Aug 20 13:22:58 2013	(r85409)
+++ trunk/boost/move/traits.hpp	2013-08-20 14:10:09 EDT (Tue, 20 Aug 2013)	(r85410)
@@ -41,14 +41,14 @@
 {};
 
 //! By default this traits returns
-//! <pre>boost::is_nothrow_move_constructible<T>::value || boost::is_nothrow_move_assignable<T>::value </pre>.
+//! <pre>boost::is_nothrow_move_constructible<T>::value && boost::is_nothrow_move_assignable<T>::value </pre>.
 //! Classes with non-throwing move constructor
 //! and assignment can specialize this trait to obtain some performance improvements.
 template <class T>
 struct has_nothrow_move
    : public ::boost::move_detail::integral_constant
       < bool
-      , boost::is_nothrow_move_constructible<T>::value ||
+      , boost::is_nothrow_move_constructible<T>::value &&
         boost::is_nothrow_move_assignable<T>::value
       >
 {};
Modified: trunk/libs/move/test/move.cpp
==============================================================================
--- trunk/libs/move/test/move.cpp	Tue Aug 20 13:22:58 2013	(r85409)
+++ trunk/libs/move/test/move.cpp	2013-08-20 14:10:09 EDT (Tue, 20 Aug 2013)	(r85410)
@@ -66,7 +66,6 @@
 {
    #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
    BOOST_STATIC_ASSERT((boost::has_nothrow_move<movable>::value == true));
-   BOOST_STATIC_ASSERT((boost::has_nothrow_move<copyable>::value == false));
    BOOST_STATIC_ASSERT((boost::has_move_emulation_enabled<copyable>::value == false));
    BOOST_STATIC_ASSERT((boost::has_move_emulation_enabled<copyable*>::value == false));
    BOOST_STATIC_ASSERT((boost::has_move_emulation_enabled<int>::value == false));