#pragma once
#define BAN_NON_COPYABLE(class) \
private: \
class(const class&) = delete; \
class& operator=(const class&) = delete
#define BAN_NON_MOVABLE(class) \
class(class&&) = delete; \
class& operator=(class&&) = delete