Существует ли std:: noncopyable (или эквивалент)?

Там boost:: noncopyable, и у меня есть свой собственный класс noncopyable в моей библиотеке. Есть ли std:: noncopyable или эквивалентный стук в последнем стандарте С++?

Это небольшая вещь, но, исходя из такого класса, делает намерение более ясным.

Ответы

Ответ 1

Нет, потому что есть стандартный способ сделать класс не копируемым:

class MyClass
{
   MyClass(const MyClass&) = delete;
   MyClass& operator=(const MyClass&) = delete;
}:

Однако класс, который нельзя скопировать, можно сделать перемещаемым, перегружая конструктор из MyClass&&.

Объявление о том, что класс не подлежит копированию (см. Выше), может быть в открытом или закрытом разделе.

Ответ 2

Я уверен, что вы уже поняли это, прочитав сообщение CashCow, но я подумал, что могу предоставить базовый класс для не подлежащих копированию классов.

class Noncopyable {
public:
    Noncopyable() = default;
    ~Noncopyable() = default;

private:
    Noncopyable(const Noncopyable&) = delete;
    Noncopyable& operator=(const Noncopyable&) = delete;
};