#include <iostream>
#include <cstddef>
struct Containing {
struct {
void* get_containing () {
return this;
}
} inner;
};
int main () {
Containing c;
std::cout << (c.inner.get_containing() == &c ? "success" : "fail") << std::endl;
std::cout << ((void*)&c.inner == (void*)&c ? "success" : "fail") << std::endl;
std::cout << ((void*)&c.inner == c.inner.get_containing() ? "success" : "fail") << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGRlZj4KCnN0cnVjdCBDb250YWluaW5nIHsKICAgIHN0cnVjdCB7CiAgICAgICAgdm9pZCogZ2V0X2NvbnRhaW5pbmcgKCkgewogICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9CiAgICB9IGlubmVyOwp9OwoKCmludCBtYWluICgpIHsKICAgIENvbnRhaW5pbmcgYzsKICAgIHN0ZDo6Y291dCA8PCAoYy5pbm5lci5nZXRfY29udGFpbmluZygpID09ICZjID8gInN1Y2Nlc3MiIDogImZhaWwiKSA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgKCh2b2lkKikmYy5pbm5lciA9PSAodm9pZCopJmMgPyAic3VjY2VzcyIgOiAiZmFpbCIpIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAoKHZvaWQqKSZjLmlubmVyID09IGMuaW5uZXIuZ2V0X2NvbnRhaW5pbmcoKSA/ICJzdWNjZXNzIiA6ICJmYWlsIikgPDwgc3RkOjplbmRsOwp9