Я пытаюсь понять, почему компилятор завершился ошибкой с кодом ошибки C2280 (при попытке обратиться к удаленной функции), когда удаленная функция никогда не используется.
Вот пример кода, который завершается с ошибкой
class A {
public:
A() {
cout << "default" << endl;
}
A(A const&) {
cout << "copy" << endl;
}
A(A&&) = delete;
A create() {
return A();
}
};
void main() {
A a;
A b(a.create());
}
И тот же код, который я не понимаю
class A {
public:
A() {
cout << "default" << endl;
}
A(A const&) {
cout << "copy" << endl;
}
A(A&&) {
cout << "move" << endl;
}
A create() {
return A();
}
};
void main() {
A a;
A b(a.create());
}
Этот код компилируется, но не отображает "перемещение" на консоли.
В результате получается
default
default