#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_COPY(TYPE) \
	TYPE(const TYPE &) = default; \
	TYPE(TYPE &&) = default; \
	TYPE & operator=(const TYPE &) = default; \
	TYPE & operator=(TYPE &&) = default

#endif