Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r82706 - in trunk: boost/move libs/move/test
From: igaztanaga_at_[hidden]
Date: 2013-02-06 20:24:56


Author: igaztanaga
Date: 2013-02-03 15:42:26 EST (Sun, 03 Feb 2013)
New Revision: 82706
URL: http://svn.boost.org/trac/boost/changeset/82706

Log:
Fixes #7969
Text files modified:
   trunk/boost/move/core.hpp | 22 ++++++++++++++++------
   trunk/libs/move/test/move.cpp | 1 -
   2 files changed, 16 insertions(+), 7 deletions(-)

Modified: trunk/boost/move/core.hpp
==============================================================================
--- trunk/boost/move/core.hpp (original)
+++ trunk/boost/move/core.hpp 2013-02-03 15:42:26 EST (Sun, 03 Feb 2013)
@@ -18,6 +18,20 @@
 
 #include <boost/move/detail/config_begin.hpp>
 
+#ifdef BOOST_NO_CXX11_DELETED_FUNCTIONS
+ #define BOOST_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN(TYPE) \
+ private:\
+ TYPE(TYPE &);\
+ TYPE& operator=(TYPE &);\
+ //
+#else
+ #define BOOST_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN(TYPE) \
+ public:\
+ TYPE(TYPE const &) = delete;\
+ TYPE& operator=(TYPE const &) = delete;\
+ //
+#endif //BOOST_NO_CXX11_DELETED_FUNCTIONS
+
 #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_MOVE_DOXYGEN_INVOKED)
 
    #include <boost/move/detail/meta_utils.hpp>
@@ -152,9 +166,7 @@
    //
    //////////////////////////////////////////////////////////////////////////////
    #define BOOST_MOVABLE_BUT_NOT_COPYABLE(TYPE)\
- private:\
- TYPE(TYPE &);\
- TYPE& operator=(TYPE &);\
+ BOOST_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN(TYPE)\
       public:\
       operator ::boost::rv<TYPE>&() \
       { return *static_cast< ::boost::rv<TYPE>* >(this); }\
@@ -210,11 +222,9 @@
    //! and assignment. The user will need to write a move constructor/assignment as explained
    //! in the documentation to fully write a movable but not copyable class.
    #define BOOST_MOVABLE_BUT_NOT_COPYABLE(TYPE)\
+ BOOST_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN(TYPE)\
       public:\
       typedef int boost_move_emulation_t;\
- private:\
- TYPE(const TYPE &);\
- TYPE& operator=(const TYPE &);\
    //
 
    //! This macro marks a type as copyable and movable.

Modified: trunk/libs/move/test/move.cpp
==============================================================================
--- trunk/libs/move/test/move.cpp (original)
+++ trunk/libs/move/test/move.cpp 2013-02-03 15:42:26 EST (Sun, 03 Feb 2013)
@@ -108,7 +108,6 @@
       movable m2(boost::move(m));
       movable m3(move_return_function2());
         }
- //limitations_test();
 
    return 0;
 }


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk