#include <set>
#include <functional>
struct A {
int a;
// 以下の mutable と const は外すとコンパイルエラー
mutable std::function<const A*()> f;
A(int a) : a(a) { }
bool operator<(A x) const { return a < x.a; }
};
int main() {
std::set<A> S;
std::set<A>::iterator x = S.insert(A(0)).first;
x->f = [&] { return &*x; };
}
I2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CnN0cnVjdCBBIHsKICBpbnQgYTsKICAvLyDku6XkuIvjga4gbXV0YWJsZSDjgaggY29uc3Qg44Gv5aSW44GZ44Go44Kz44Oz44OR44Kk44Or44Ko44Op44O8CiAgbXV0YWJsZSBzdGQ6OmZ1bmN0aW9uPGNvbnN0IEEqKCk+IGY7IAogIEEoaW50IGEpIDogYShhKSB7IH0KICBib29sIG9wZXJhdG9yPChBIHgpIGNvbnN0IHsgcmV0dXJuIGEgPCB4LmE7IH0KfTsKaW50IG1haW4oKSB7CiAgc3RkOjpzZXQ8QT4gUzsKICBzdGQ6OnNldDxBPjo6aXRlcmF0b3IgeCA9IFMuaW5zZXJ0KEEoMCkpLmZpcnN0OwogIHgtPmYgPSBbJl0geyByZXR1cm4gJip4OyB9Owp9Cgo=