#include <iostream>
struct Bar;
struct Foo
{
Bar& refBar;
int n;
void show() const;
};
struct Bar
{
Foo& refFoo;
int n;
void show() const;
};
void Foo::show() const
{
std::cout << "Foo.n is " << n
<< " Foo.refBar.n is " << refBar.n
<< '\n';
}
void Bar::show() const
{
std::cout << "Bar.n is " << n
<< " Bar.refFoo.n is " << refFoo.n
<< '\n';
}
int main()
{
struct {Foo f; Bar b;} s = {{s.b, 2}, {s.f, 1}};
s.f.show();
s.b.show();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgQmFyOwpzdHJ1Y3QgRm9vCnsKICAgIEJhciYgcmVmQmFyOwogICAgaW50IG47CiAgICB2b2lkIHNob3coKSBjb25zdDsKfTsKCnN0cnVjdCBCYXIKewogICAgRm9vJiByZWZGb287CiAgICBpbnQgbjsKICAgIHZvaWQgc2hvdygpIGNvbnN0Owp9OwoKdm9pZCBGb286OnNob3coKSBjb25zdAp7CiAgICBzdGQ6OmNvdXQgPDwgIkZvby5uIGlzICIgPDwgbgogICAgICAgICAgICAgIDw8ICIgRm9vLnJlZkJhci5uIGlzICIgPDwgcmVmQmFyLm4KICAgICAgICAgICAgICA8PCAnXG4nOwp9Cgp2b2lkIEJhcjo6c2hvdygpIGNvbnN0CnsKICAgICBzdGQ6OmNvdXQgPDwgIkJhci5uIGlzICIgPDwgbgogICAgICAgICAgICAgICA8PCAiIEJhci5yZWZGb28ubiBpcyAiIDw8IHJlZkZvby5uCiAgICAgICAgICAgICAgIDw8ICdcbic7Cn0KCmludCBtYWluKCkKewogICAgc3RydWN0IHtGb28gZjsgQmFyIGI7fSBzID0ge3tzLmIsIDJ9LCB7cy5mLCAxfX07CiAgICBzLmYuc2hvdygpOwogICAgcy5iLnNob3coKTsKfQo=