#include <memory>
class World {};
class Unit {
public:
explicit Unit(std::shared_ptr<World> p);
private:
std::weak_ptr<World> world;
};
Unit::Unit(std::shared_ptr<World> p)
: world(p)
{}
int main()
{
auto world = std::make_shared<World>();
Unit u { world };
}
I2luY2x1ZGUgPG1lbW9yeT4KCmNsYXNzIFdvcmxkIHt9OwoKY2xhc3MgVW5pdCB7CnB1YmxpYzoKICAgIGV4cGxpY2l0IFVuaXQoc3RkOjpzaGFyZWRfcHRyPFdvcmxkPiBwKTsKCnByaXZhdGU6CiAgICBzdGQ6OndlYWtfcHRyPFdvcmxkPiB3b3JsZDsKfTsKClVuaXQ6OlVuaXQoc3RkOjpzaGFyZWRfcHRyPFdvcmxkPiBwKQogICAgOiB3b3JsZChwKQp7fQoKaW50IG1haW4oKQp7CiAgICBhdXRvIHdvcmxkID0gc3RkOjptYWtlX3NoYXJlZDxXb3JsZD4oKTsKICAgIFVuaXQgdSB7IHdvcmxkIH07Cn0=