dfx 0.1.0
Linux-based dynamic dataflow executor
Loading...
Searching...
No Matches
CopyMoveControl.hpp File Reference

Convenience macros to explicitly control copy and move semantics. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define DISABLE_COPY(ClassName)
 Disable copy (copy ctor + copy-assign)
#define DISABLE_MOVE(ClassName)
 Disable move (move ctor + move-assign)
#define DISABLE_COPY_AND_MOVE(ClassName)
 Disable both copy and move.
#define ENABLE_DEFAULT_COPY(ClassName)
 Enable copy (default copy ctor + copy-assign)
#define ENABLE_DEFAULT_COPY_NOEXCEPT(ClassName)
 Enable copy (default copy ctor + copy-assign) noexcept.
#define ENABLE_DEFAULT_MOVE(ClassName)
 Enable move (default move ctor + move-assign)
#define ENABLE_DEFAULT_MOVE_NOEXCEPT(ClassName)
 Enable move (default move ctor + move-assign) noexcept.
#define ENABLE_DEFAULT_COPY_AND_MOVE(ClassName)
 Enable both copy and move.
#define ENABLE_DEFAULT_COPY_AND_MOVE_NOEXCEPT(ClassName)
 Enable both copy and move noexcept.
#define ENABLE_DEFAULT_MOVE_DISABLE_COPY(ClassName)
 Enable default move and disable copy.
#define ENABLE_DEFAULT_MOVE_DISABLE_COPY_NOEXCEPT(ClassName)
 Enable default move and disable copy noexcept.

Detailed Description

Convenience macros to explicitly control copy and move semantics.

This header provides a small set of macros that explicitly enable or disable copy and/or move construction and assignment for a class.

The intent is to make ownership and lifetime semantics immediately visible in the class declaration, without repeating boilerplate = delete / = default declarations.

These macros are purely syntactic helpers and do not introduce any additional behavior beyond what is expressed by the generated special member functions.

Macro Definition Documentation

◆ DISABLE_COPY

#define DISABLE_COPY ( ClassName)
Value:
ClassName(ClassName const &) = delete; \
ClassName & operator=(ClassName const &) = delete

Disable copy (copy ctor + copy-assign)

◆ DISABLE_COPY_AND_MOVE

#define DISABLE_COPY_AND_MOVE ( ClassName)
Value:
DISABLE_COPY(ClassName); \
DISABLE_MOVE(ClassName)
#define DISABLE_COPY(ClassName)
Disable copy (copy ctor + copy-assign)
Definition CopyMoveControl.hpp:27

Disable both copy and move.

◆ DISABLE_MOVE

#define DISABLE_MOVE ( ClassName)
Value:
ClassName(ClassName &&) = delete; \
ClassName & operator=(ClassName &&) = delete

Disable move (move ctor + move-assign)

◆ ENABLE_DEFAULT_COPY

#define ENABLE_DEFAULT_COPY ( ClassName)
Value:
ClassName(ClassName const &) = default; \
ClassName & operator=(ClassName const &) = default

Enable copy (default copy ctor + copy-assign)

◆ ENABLE_DEFAULT_COPY_AND_MOVE

#define ENABLE_DEFAULT_COPY_AND_MOVE ( ClassName)
Value:
ENABLE_DEFAULT_COPY(ClassName); \
ENABLE_DEFAULT_MOVE(ClassName)
#define ENABLE_DEFAULT_COPY(ClassName)
Enable copy (default copy ctor + copy-assign)
Definition CopyMoveControl.hpp:42

Enable both copy and move.

◆ ENABLE_DEFAULT_COPY_AND_MOVE_NOEXCEPT

#define ENABLE_DEFAULT_COPY_AND_MOVE_NOEXCEPT ( ClassName)
Value:
ENABLE_DEFAULT_MOVE_NOEXCEPT(ClassName)
#define ENABLE_DEFAULT_COPY_NOEXCEPT(ClassName)
Enable copy (default copy ctor + copy-assign) noexcept.
Definition CopyMoveControl.hpp:47

Enable both copy and move noexcept.

◆ ENABLE_DEFAULT_COPY_NOEXCEPT

#define ENABLE_DEFAULT_COPY_NOEXCEPT ( ClassName)
Value:
ClassName(ClassName const &) noexcept = default; \
ClassName & operator=(ClassName const &) noexcept = default

Enable copy (default copy ctor + copy-assign) noexcept.

◆ ENABLE_DEFAULT_MOVE

#define ENABLE_DEFAULT_MOVE ( ClassName)
Value:
ClassName(ClassName &&) = default; \
ClassName & operator=(ClassName &&) = default

Enable move (default move ctor + move-assign)

◆ ENABLE_DEFAULT_MOVE_DISABLE_COPY

#define ENABLE_DEFAULT_MOVE_DISABLE_COPY ( ClassName)
Value:
ENABLE_DEFAULT_MOVE(ClassName); \
DISABLE_COPY(ClassName)
#define ENABLE_DEFAULT_MOVE(ClassName)
Enable move (default move ctor + move-assign)
Definition CopyMoveControl.hpp:52

Enable default move and disable copy.

◆ ENABLE_DEFAULT_MOVE_DISABLE_COPY_NOEXCEPT

#define ENABLE_DEFAULT_MOVE_DISABLE_COPY_NOEXCEPT ( ClassName)
Value:
DISABLE_COPY(ClassName)
#define ENABLE_DEFAULT_MOVE_NOEXCEPT(ClassName)
Enable move (default move ctor + move-assign) noexcept.
Definition CopyMoveControl.hpp:57

Enable default move and disable copy noexcept.

◆ ENABLE_DEFAULT_MOVE_NOEXCEPT

#define ENABLE_DEFAULT_MOVE_NOEXCEPT ( ClassName)
Value:
ClassName(ClassName &&) noexcept = default; \
ClassName & operator=(ClassName &&) noexcept = default

Enable move (default move ctor + move-assign) noexcept.