add singleton pattern
This commit is contained in:
parent
25c7bb059c
commit
096ef69938
28
src/hack/patterns/singleton.hpp
Normal file
28
src/hack/patterns/singleton.hpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace hack::patterns
|
||||||
|
{
|
||||||
|
struct no_copy
|
||||||
|
{
|
||||||
|
no_copy() = default;
|
||||||
|
no_copy(const no_copy&&) = delete;
|
||||||
|
no_copy operator=(const no_copy&&) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct no_move
|
||||||
|
{
|
||||||
|
no_move() = default;
|
||||||
|
no_move(no_move&&) = delete;
|
||||||
|
no_move operator=(no_move&&) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
struct singleton : public no_move, no_copy
|
||||||
|
{
|
||||||
|
static T& instance()
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user