Почему я должен удалить конструктор перемещения и переместить оператора назначения в Синглтоне?C++

Программы на C++. Форум разработчиков
Anonymous
Почему я должен удалить конструктор перемещения и переместить оператора назначения в Синглтоне?

Сообщение Anonymous »

У меня есть следующая реализация политики в одиночной политике: < /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

Вернуться в «C++»