Classes | Namespaces | Macros
core.hpp File Reference
#include <boost/config.hpp>
#include <boost/move/detail/config_begin.hpp>
#include <boost/move/detail/workaround.hpp>
#include <boost/move/detail/config_end.hpp>
Include dependency graph for core.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  boost::move_detail::forward_type< T >
 
struct  boost::has_move_emulation_enabled< T >
 

Namespaces

 boost
 BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
 
 boost::move_detail
 

Macros

#define BOOST_CATCH_CONST_RLVALUE(TYPE)   const TYPE & \
 
#define BOOST_COPY_ASSIGN_REF(TYPE)   const TYPE & \
 
#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)
 
#define BOOST_COPYABLE_AND_MOVABLE_ALT(TYPE)
 
#define BOOST_FWD_REF(TYPE)   TYPE && \
 
#define BOOST_MOVABLE_BUT_NOT_COPYABLE(TYPE)
 
#define BOOST_MOVE_BASE(BASE_TYPE, ARG)   ::boost::move((BASE_TYPE&)(ARG))
 defined(BOOST_MOVE_MSVC_AUTO_MOVE_RETURN_BUG) || defined(BOOST_MOVE_DOXYGEN_INVOKED) More...
 
#define BOOST_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN(TYPE)
 
#define BOOST_MOVE_RET(RET_TYPE, REF)   REF
 
#define BOOST_RV_REF(TYPE)   TYPE && \
 
#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   \
 
#define BOOST_RV_REF_END   && \
 

Detailed Description

This header implements macros to define movable classes and move-aware functions

Definition in file core.hpp.

Macro Definition Documentation

#define BOOST_CATCH_CONST_RLVALUE (   TYPE)    const TYPE & \

Definition at line 364 of file core.hpp.

#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.

Definition at line 328 of file core.hpp.

#define BOOST_COPY_ASSIGN_REF_2_TEMPL_ARGS (   TYPE,
  ARG1,
  ARG2 
)    const TYPE<ARG1, ARG2> & \

Definition at line 356 of file core.hpp.

#define BOOST_COPY_ASSIGN_REF_3_TEMPL_ARGS (   TYPE,
  ARG1,
  ARG2,
  ARG3 
)    const TYPE<ARG1, ARG2, ARG3>& \

Definition at line 360 of file core.hpp.

#define BOOST_COPY_ASSIGN_REF_BEG   const \

Definition at line 348 of file core.hpp.

#define BOOST_COPY_ASSIGN_REF_END   & \

Definition at line 352 of file core.hpp.

#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.

Definition at line 279 of file core.hpp.

#define BOOST_COPYABLE_AND_MOVABLE_ALT (   TYPE)

Definition at line 283 of file core.hpp.

#define BOOST_FWD_REF (   TYPE)    TYPE && \

This macro is used to implement portable perfect forwarding as explained in the documentation.

Definition at line 334 of file core.hpp.

#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:42

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.

Definition at line 270 of file core.hpp.

#define BOOST_MOVE_BASE (   BASE_TYPE,
  ARG 
)    ::boost::move((BASE_TYPE&)(ARG))

defined(BOOST_MOVE_MSVC_AUTO_MOVE_RETURN_BUG) || defined(BOOST_MOVE_DOXYGEN_INVOKED)

This macro is used to achieve portable optimal move constructors.

When implementing the move constructor, in C++03 compilers the moved-from argument must be cast to the base type before calling boost::move() due to rvalue reference limitations.

In C++11 compilers the cast from a rvalue reference of a derived type to a rvalue reference of a base type is implicit.

Definition at line 437 of file core.hpp.

#define BOOST_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN (   TYPE)
Value:
public:\
TYPE(TYPE const &) = delete;\
TYPE& operator=(TYPE const &) = delete;\
public:\
typedef int boost_move_no_copy_constructor_or_assign; \
private:\

Definition at line 42 of file core.hpp.

#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.

Definition at line 392 of file core.hpp.

#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

Definition at line 303 of file core.hpp.

#define BOOST_RV_REF_2_TEMPL_ARGS (   TYPE,
  ARG1,
  ARG2 
)    TYPE<ARG1, ARG2> && \

Definition at line 340 of file core.hpp.

#define BOOST_RV_REF_3_TEMPL_ARGS (   TYPE,
  ARG1,
  ARG2,
  ARG3 
)    TYPE<ARG1, ARG2, ARG3> && \

Definition at line 344 of file core.hpp.

#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

Definition at line 313 of file core.hpp.

#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

Definition at line 323 of file core.hpp.



librealsense2
Author(s): Sergey Dorodnicov , Doron Hirshberg , Mark Horn , Reagan Lopez , Itay Carpis
autogenerated on Mon May 3 2021 02:50:24