#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=