#include <iostream>
using namespace std;
class M{
public: int database=0;
M& operator=(M&& other){ //<--- change from "M&&" to "M&" will make it compilable
this->database=other.database;
other.database=0;
return *this;
}
M(M &&other) {
*this = std::move(other);
}
M (M& m)=default;
M ()=default;
};
class B{
public: M shouldMove;
};
int main() {
B b;
b.shouldMove.database=5;
B b2=std::move(b); //<--- error: use of deleted function 'B::B(B&&)'
std::cout<< b.shouldMove.database <<std::endl;
std::cout<< b2.shouldMove.database <<std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgTXsKCXB1YmxpYzogaW50IGRhdGFiYXNlPTA7CglNJiBvcGVyYXRvcj0oTSYmIG90aGVyKXsgIC8vPC0tLSBjaGFuZ2UgZnJvbSAiTSYmIiB0byAiTSYiIHdpbGwgbWFrZSBpdCBjb21waWxhYmxlCgkJdGhpcy0+ZGF0YWJhc2U9b3RoZXIuZGF0YWJhc2U7CgkJb3RoZXIuZGF0YWJhc2U9MDsKCQlyZXR1cm4gKnRoaXM7CgkJCgl9CglNKE0gJiZvdGhlcikgewoJCSp0aGlzID0gc3RkOjptb3ZlKG90aGVyKTsKCX0KCU0gKE0mIG0pPWRlZmF1bHQ7CglNICgpPWRlZmF1bHQ7Cn07CmNsYXNzIEJ7CglwdWJsaWM6IE0gc2hvdWxkTW92ZTsKfTsKCmludCBtYWluKCkgewoJQiBiOwoJYi5zaG91bGRNb3ZlLmRhdGFiYXNlPTU7CglCIGIyPXN0ZDo6bW92ZShiKTsgICAvLzwtLS0gZXJyb3I6IHVzZSBvZiBkZWxldGVkIGZ1bmN0aW9uICdCOjpCKEImJiknCglzdGQ6OmNvdXQ8PAliLnNob3VsZE1vdmUuZGF0YWJhc2UgPDxzdGQ6OmVuZGw7CglzdGQ6OmNvdXQ8PAliMi5zaG91bGRNb3ZlLmRhdGFiYXNlIDw8c3RkOjplbmRsOwoJcmV0dXJuIDA7Cn0=