maliput
|
Provides careful macros to selectively enable or disable the special member functions for copy-construction, copy-assignment, move-construction, and move-assignment. http://en.cppreference.com/w/cpp/language/member_functions#Special_member_functions When enabled via these macros, the = default
implementation is provided. Code that needs custom copy or move functions should not use these macros.
Macros | |
#define | MALIPUT_NO_COPY_NO_MOVE_NO_ASSIGN(Classname) |
MALIPUT_NO_COPY_NO_MOVE_NO_ASSIGN deletes the special member functions for copy-construction, copy-assignment, move-construction, and move-assignment. More... | |
#define | MALIPUT_DEFAULT_COPY_AND_MOVE_AND_ASSIGN(Classname) |
MALIPUT_DEFAULT_COPY_AND_MOVE_AND_ASSIGN defaults the special member functions for copy-construction, copy-assignment, move-construction, and move-assignment. More... | |
#define | MALIPUT_DECLARE_COPY_AND_MOVE_AND_ASSIGN(Classname) |
MALIPUT_DECLARE_COPY_AND_MOVE_AND_ASSIGN declares (but does not define) the special member functions for copy-construction, copy-assignment, move-construction, and move-assignment. More... | |
#define | MALIPUT_DEFINE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN_T(Classname) |
Helper for MALIPUT_DECLARE_COPY_AND_MOVE_AND_ASSIGN. More... | |
#define MALIPUT_DECLARE_COPY_AND_MOVE_AND_ASSIGN | ( | Classname | ) |
MALIPUT_DECLARE_COPY_AND_MOVE_AND_ASSIGN declares (but does not define) the special member functions for copy-construction, copy-assignment, move-construction, and move-assignment.
This is useful when paired with MALIPUT_DEFINE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN_T to work around https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57728 whereby the declaration and definition must be split. Once Maliput no longer supports GCC versions prior to 6.3, this macro could be removed. Invoke this macro in the public section of the class declaration, e.g.:
#define MALIPUT_DEFAULT_COPY_AND_MOVE_AND_ASSIGN | ( | Classname | ) |
MALIPUT_DEFAULT_COPY_AND_MOVE_AND_ASSIGN defaults the special member functions for copy-construction, copy-assignment, move-construction, and move-assignment.
This macro should be used only when copy-construction and copy-assignment defaults are well-formed. Note that the defaulted move functions could conceivably still be ill-formed, in which case they will effectively not be declared or used – but because the copy constructor exists the type will still be MoveConstructible. Invoke this this macro in the public section of the class declaration, e.g.:
#define MALIPUT_DEFINE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN_T | ( | Classname | ) |
Helper for MALIPUT_DECLARE_COPY_AND_MOVE_AND_ASSIGN.
Provides defaulted definitions for the four special member functions of a templated class.
#define MALIPUT_NO_COPY_NO_MOVE_NO_ASSIGN | ( | Classname | ) |
MALIPUT_NO_COPY_NO_MOVE_NO_ASSIGN deletes the special member functions for copy-construction, copy-assignment, move-construction, and move-assignment.
Invoke this this macro in the public section of the class declaration, e.g.: