summaryrefslogtreecommitdiff
path: root/lib/special_members.hpp
blob: d1dca9901b9a6384a36d13d42914a26c322e0c0e (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
#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)

#endif