blob: 4b8588463596e8adaab8c8d09a76f3c55c4f7842 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#ifndef SPECIAL_MEMBERS_H
#define SPECIAL_MEMBERS_H
#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
#endif
|