diff options
Diffstat (limited to 'lib/special_members.h')
-rw-r--r-- | lib/special_members.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/special_members.h b/lib/special_members.h new file mode 100644 index 0000000..312862b --- /dev/null +++ b/lib/special_members.h @@ -0,0 +1,29 @@ +#pragma once + +#define NO_COPY(TYPE) \ + TYPE(const TYPE &) = delete; \ + void operator=(const TYPE &) = delete + +#define NO_MOVE(TYPE) \ + TYPE(TYPE &&) = delete; \ + void operator=(TYPE &&) = delete + +#define DEFAULT_MOVE(TYPE) \ + TYPE(TYPE &&) noexcept = default; \ + TYPE & operator=(TYPE &&) noexcept = default + +#define DEFAULT_COPY(TYPE) \ + TYPE(const TYPE &) = default; \ + TYPE & operator=(const TYPE &) = default + +#define DEFAULT_MOVE_COPY(TYPE) \ + DEFAULT_MOVE(TYPE); \ + DEFAULT_COPY(TYPE) + +#define DEFAULT_MOVE_NO_COPY(TYPE) \ + DEFAULT_MOVE(TYPE); \ + NO_COPY(TYPE) + +#define CUSTOM_MOVE(TYPE) \ + TYPE(TYPE &&) noexcept; \ + TYPE & operator=(TYPE &&) noexcept |