Я хотел бы отключить конструктор перемещения в классе. Вместо того, чтобы двигаться, я хотел бы основываться на конструкторе копирования. Когда я пытаюсь написать этот код:Отключить конструктор перемещения
class Boo
{
public:
Boo(){}
Boo(const Boo& boo) {};
Boo(Boo&& boo) = delete;
};
Boo TakeBoo()
{
Boo b;
return b;
}
во время компиляции я получил ошибку:
error C2280: 'Boo::Boo(Boo &&)': attempting to reference a deleted function
Как я могу отключить шаг конструктора и силы копии вместо этого?
просто не перегрузить конструктор перемещения и компилятор не будет создавать конструктор перемещения для него, так как уже есть конструктор копирования –
Из стандарта: «Если определение класса X не явно объявлять конструктор перемещения, он будет объявлен как неявно объявленным как дефолт, если и только если X не имеет объявленного пользователем конструктора копирования [...] Когда конструктор перемещения неявно объявлен или явно указан, выражения, которые в противном случае вызывали бы ход конструктор может вместо этого вызвать конструктор копирования ». – Pixelchemist
Что вы надеетесь достичь этим? Это никоим образом не имеет смысла. –