This header implements macros to define movable classes and move-aware functions.  
More...
#include <boost/move/detail/config_begin.hpp>
#include <boost/move/detail/config_end.hpp>
 | 
| #define  | BOOST_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN(TYPE) | 
|   | 
| #define  | BOOST_MOVABLE_BUT_NOT_COPYABLE(TYPE) | 
|   | This macro marks a type as movable but not copyable, disabling copy construction and assignment.  More...
  | 
|   | 
| #define  | BOOST_COPYABLE_AND_MOVABLE(TYPE) | 
|   | This macro marks a type as copyable and movable.  More...
  | 
|   | 
| #define  | BOOST_COPYABLE_AND_MOVABLE_ALT(TYPE) | 
|   | 
| #define  | BOOST_RV_REF(TYPE)   TYPE && \ | 
|   | This macro is used to achieve portable syntax in move constructors and assignments for classes marked as BOOST_COPYABLE_AND_MOVABLE or BOOST_MOVABLE_BUT_NOT_COPYABLE.  More...
  | 
|   | 
| #define  | BOOST_RV_REF_BEG   \ | 
|   | This macro is used to achieve portable syntax in move constructors and assignments for template classes marked as BOOST_COPYABLE_AND_MOVABLE or BOOST_MOVABLE_BUT_NOT_COPYABLE.  More...
  | 
|   | 
| #define  | BOOST_RV_REF_END   && \ | 
|   | This macro is used to achieve portable syntax in move constructors and assignments for template classes marked as BOOST_COPYABLE_AND_MOVABLE or BOOST_MOVABLE_BUT_NOT_COPYABLE.  More...
  | 
|   | 
| #define  | BOOST_COPY_ASSIGN_REF(TYPE)   const TYPE & \ | 
|   | This macro is used to achieve portable syntax in copy assignment for classes marked as BOOST_COPYABLE_AND_MOVABLE.  More...
  | 
|   | 
| #define  | BOOST_FWD_REF(TYPE)   TYPE && \ | 
|   | This macro is used to implement portable perfect forwarding as explained in the documentation.  More...
  | 
|   | 
| #define  | BOOST_RV_REF_2_TEMPL_ARGS(TYPE, ARG1, ARG2)   TYPE<ARG1, ARG2> && \ | 
|   | 
| #define  | BOOST_RV_REF_3_TEMPL_ARGS(TYPE, ARG1, ARG2, ARG3)   TYPE<ARG1, ARG2, ARG3> && \ | 
|   | 
| #define  | BOOST_COPY_ASSIGN_REF_BEG   const \ | 
|   | 
| #define  | BOOST_COPY_ASSIGN_REF_END   & \ | 
|   | 
| #define  | BOOST_COPY_ASSIGN_REF_2_TEMPL_ARGS(TYPE, ARG1, ARG2)   const TYPE<ARG1, ARG2> & \ | 
|   | 
| #define  | BOOST_COPY_ASSIGN_REF_3_TEMPL_ARGS(TYPE, ARG1, ARG2, ARG3)   const TYPE<ARG1, ARG2, ARG3>& \ | 
|   | 
| #define  | BOOST_CATCH_CONST_RLVALUE(TYPE)   const TYPE & \ | 
|   | 
| #define  | BOOST_MOVE_RET(RET_TYPE, REF)   REF | 
|   | This macro is used to achieve portable move return semantics.  More...
  | 
|   | 
This header implements macros to define movable classes and move-aware functions. 
 
      
        
          | #define BOOST_CATCH_CONST_RLVALUE | 
          ( | 
            | 
          TYPE | ) | 
             const TYPE & \ | 
        
      
 
 
      
        
          | #define BOOST_COPY_ASSIGN_REF | 
          ( | 
            | 
          TYPE | ) | 
             const TYPE & \ | 
        
      
 
This macro is used to achieve portable syntax in copy assignment for classes marked as BOOST_COPYABLE_AND_MOVABLE. 
 
 
      
        
          | #define BOOST_COPY_ASSIGN_REF_2_TEMPL_ARGS | 
          ( | 
            | 
          TYPE,  | 
        
        
           | 
           | 
            | 
          ARG1,  | 
        
        
           | 
           | 
            | 
          ARG2  | 
        
        
           | 
          ) | 
           |    const TYPE<ARG1, ARG2> & \ | 
        
      
 
 
      
        
          | #define BOOST_COPY_ASSIGN_REF_3_TEMPL_ARGS | 
          ( | 
            | 
          TYPE,  | 
        
        
           | 
           | 
            | 
          ARG1,  | 
        
        
           | 
           | 
            | 
          ARG2,  | 
        
        
           | 
           | 
            | 
          ARG3  | 
        
        
           | 
          ) | 
           |    const TYPE<ARG1, ARG2, ARG3>& \ | 
        
      
 
 
      
        
          | #define BOOST_COPY_ASSIGN_REF_BEG   const \ | 
        
      
 
 
      
        
          | #define BOOST_COPY_ASSIGN_REF_END   & \ | 
        
      
 
 
      
        
          | #define BOOST_COPYABLE_AND_MOVABLE | 
          ( | 
            | 
          TYPE | ) | 
           | 
        
      
 
This macro marks a type as copyable and movable. 
The user will need to write a move constructor/assignment and a copy assignment as explained in the documentation to fully write a copyable and movable class. 
 
 
      
        
          | #define BOOST_COPYABLE_AND_MOVABLE_ALT | 
          ( | 
            | 
          TYPE | ) | 
           | 
        
      
 
 
      
        
          | #define BOOST_FWD_REF | 
          ( | 
            | 
          TYPE | ) | 
             TYPE && \ | 
        
      
 
This macro is used to implement portable perfect forwarding as explained in the documentation. 
 
 
      
        
          | #define BOOST_MOVABLE_BUT_NOT_COPYABLE | 
          ( | 
            | 
          TYPE | ) | 
           | 
        
      
 
Value:
      public:\
      typedef int boost_move_emulation_t;\
#define BOOST_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN(TYPE)
Definition: core.hpp:33
 
 
This macro marks a type as movable but not copyable, disabling copy construction 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_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN | 
          ( | 
            | 
          TYPE | ) | 
           | 
        
      
 
Value:public:\
      TYPE(TYPE const &) = delete;\
      public:\
      typedef int boost_move_no_copy_constructor_or_assign; \
      private:\
cpp_int_backend & operator=(const cpp_int_backend< MinBits2, MaxBits2, SignType2, Checked2, Allocator2 > &other)
Definition: cpp_int.hpp:1117
 
 
 
 
      
        
          | #define BOOST_MOVE_RET | 
          ( | 
            | 
          RET_TYPE,  | 
        
        
           | 
           | 
            | 
          REF  | 
        
        
           | 
          ) | 
           |    REF | 
        
      
 
This macro is used to achieve portable move return semantics. 
The C++11 Standard allows implicit move returns when the object to be returned is designated by a lvalue and:
- The criteria for elision of a copy operation are met OR
 
- The criteria would be met save for the fact that the source object is a function parameter
 
For C++11 conforming compilers this macros only yields to REF: return BOOST_MOVE_RET(RET_TYPE, REF); -> return REF;
For compilers without rvalue references this macro does an explicit move if the move emulation is activated and the return type (RET_TYPE) is not a reference.
For non-conforming compilers with rvalue references like Visual 2010 & 2012, an explicit move is performed if RET_TYPE is not a reference.
Caution: When using this macro in non-conforming or C++03 compilers, a move will be performed even if the C++11 standard does not allow it (e.g. returning a static variable). The user is responsible for using this macro only to return local objects that met C++11 criteria. 
 
 
      
        
          | #define BOOST_RV_REF | 
          ( | 
            | 
          TYPE | ) | 
             TYPE && \ | 
        
      
 
This macro is used to achieve portable syntax in move constructors and assignments for classes marked as BOOST_COPYABLE_AND_MOVABLE or BOOST_MOVABLE_BUT_NOT_COPYABLE. 
 
 
      
        
          | #define BOOST_RV_REF_2_TEMPL_ARGS | 
          ( | 
            | 
          TYPE,  | 
        
        
           | 
           | 
            | 
          ARG1,  | 
        
        
           | 
           | 
            | 
          ARG2  | 
        
        
           | 
          ) | 
           |    TYPE<ARG1, ARG2> && \ | 
        
      
 
 
      
        
          | #define BOOST_RV_REF_3_TEMPL_ARGS | 
          ( | 
            | 
          TYPE,  | 
        
        
           | 
           | 
            | 
          ARG1,  | 
        
        
           | 
           | 
            | 
          ARG2,  | 
        
        
           | 
           | 
            | 
          ARG3  | 
        
        
           | 
          ) | 
           |    TYPE<ARG1, ARG2, ARG3> && \ | 
        
      
 
 
      
        
          | #define BOOST_RV_REF_BEG   \ | 
        
      
 
This macro is used to achieve portable syntax in move constructors and assignments for template classes marked as BOOST_COPYABLE_AND_MOVABLE or BOOST_MOVABLE_BUT_NOT_COPYABLE. 
As macros have problems with comma-separated template arguments, the template argument must be preceded with BOOST_RV_REF_BEG and ended with BOOST_RV_REF_END 
 
 
      
        
          | #define BOOST_RV_REF_END   && \ | 
        
      
 
This macro is used to achieve portable syntax in move constructors and assignments for template classes marked as BOOST_COPYABLE_AND_MOVABLE or BOOST_MOVABLE_BUT_NOT_COPYABLE. 
As macros have problems with comma-separated template arguments, the template argument must be preceded with BOOST_RV_REF_BEG and ended with BOOST_RV_REF_END