In class Pos
the move constructor was defined as deleted.
Now function getPos()
can't return a object?
Why it cannot use copy constructor to deal with the return value?
#include <iostream>
using namespace std;
#define debug(x) cout<<#x<<": "<<(x)<<endl;
class Pos {
public:
Pos() { cout << "call:Pos()" << endl; }
Pos(const Pos&p) { cout << "call:Pos(const Pos&p)" << endl; }
Pos(Pos&& p) noexcept = delete;
~Pos() {
cout << "call~Pos()" << endl;
}
};
Pos getPos()
{
Pos p;
return p; // Error: cannot reference function (declared line number: 12) - it is a deleted function
}
int main()
{
Pos p = getPos();
cin.get();
return 0;
}