16 lines
548 B
C++
16 lines
548 B
C++
#define __PREVENT_DESTRUCTION(self) \
|
|
~self() = delete
|
|
#define __PREVENT_JUST_CONSTRUCTION(self) \
|
|
self() = delete
|
|
#define __PREVENT_CONSTRUCTION(self) \
|
|
__PREVENT_JUST_CONSTRUCTION(self); \
|
|
__PREVENT_DESTRUCTION(self)
|
|
#define __PREVENT_COPY(self) \
|
|
self(const self &) = delete; \
|
|
self &operator=(const self &) = delete
|
|
template <typename T>
|
|
static constexpr decltype(sizeof(T)) __real_sizeof() {
|
|
return sizeof(std::conditional_t<std::is_reference_v<T>, void *, T>);
|
|
}
|
|
template <typename T>
|
|
using __make_reference = T &; |