:cpp:
#pragma once
#define MAKE_SINGLETON(ClassName) \
public: \
ClassName(const ClassName &) = delete; \
ClassName &operator=(const ClassName &) = delete; \
ClassName(ClassName &&other) = delete; \
ClassName &operator=(ClassName &&) = delete; \
static ClassName &get() { \
static ClassName instance; \
return instance; \
}
#define CONSTRUCT_SINGLETON(ClassName) ClassName ::get();
#define GET_SINGLETON(ClassName) ClassName ::get();