I have this piece of C++ code:
class Args {};
class MyClass {
public:
MyClass(Args& a) {}
MyClass(MyClass &&) = delete;
};
int main() {
Args a;
MyClass c1 = MyClass(a);
MyClass c2 = a;
MyClass c3(a);
return 0;
}
This does not compile because the construction of objects c1
and c2
seem to involve the class's move constructor:
error: use of deleted function ‘MyClass::MyClass(MyClass&&)’
It seems as if the compiler wants to create temporary object and then move them to c1
and c2
. Why is this happening? Shouldn't all three statements just call the MyClass(Args& a)
constructor?
On the other hand, if I do create the move constructor the program compiles fine and the move constructor is never called!!!
Aucun commentaire:
Enregistrer un commentaire