#include <iostream>
#include <boost/optional.hpp>
struct X
{
int x;
boost::optional<X&> parent;
};
int main()
{
X a, b;
a.x = 1; b.x = 2;
b.parent = a;
std::cout << b.parent->x << "\n";
a.x = 42;
std::cout << b.parent->x << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Ym9vc3Qvb3B0aW9uYWwuaHBwPgoKc3RydWN0IFgKewoJaW50IHg7Cglib29zdDo6b3B0aW9uYWw8WCY+IHBhcmVudDsKfTsKCmludCBtYWluKCkKewoJWCBhLCBiOwoJYS54ID0gMTsgYi54ID0gMjsKCWIucGFyZW50ID0gYTsKCXN0ZDo6Y291dCA8PCBiLnBhcmVudC0+eCA8PCAiXG4iOwoKCWEueCA9IDQyOwoJc3RkOjpjb3V0IDw8IGIucGFyZW50LT54IDw8ICJcbiI7Cn0K