У меня есть следующая реализация политики в одиночной политике: < /p>
template
class Singleton
{
Singleton(){}; // so we cannot accidentally delete it via pointers
Singleton(const Singleton&) = delete; // no copies
Singleton& operator=(const Singleton&) = delete; // no self-assignments
Singleton(Singleton&&) = delete; // WHY?
Singleton& operator=(Singleton&&) = delete; // WHY?
public:
static T& getInstance() // singleton
{
static T instance; // Guaranteed to be destroyed.
// Instantiated on first use.
// Thread safe in C++11
return instance;
}
};
< /code>
, который я затем использую с помощью любопытно повторяющегося шаблона (CRTP) < /p>
class Foo: public Singleton // now Foo is a Singleton
{
friend class Singleton;
~Foo(){}
Foo(){};
public:
// rest of the code
};
< /code>
Я не могу понять, почему я должен удалить конструктор движения и оператор назначения. Можете ли вы привести мне один пример, где я в конечном итоге сломаю Синглтон, если я не удаляю (вообще не определяю) переезд CTOR и оператора назначения?
Подробнее здесь: https://stackoverflow.com/questions/237 ... -singleton