struct Inner { int x; };
struct Outer {int t; Inner i; };
int main(void) {
int (Inner::*p) = &Inner::x;
Inner s = {.x = 1};
Outer outer = {.t = 1, {.x = 1}};
Inner (Outer::*o) = &Outer::i;
int (Inner::*i) = &Inner::x;
outer.*o.*i = 2;
return 0;
}
CgpzdHJ1Y3QgSW5uZXIgeyBpbnQgeDsgfTsKCnN0cnVjdCBPdXRlciB7aW50IHQ7IElubmVyIGk7IH07CgoKaW50IG1haW4odm9pZCkgewoJaW50IChJbm5lcjo6KnApID0gJklubmVyOjp4OwoJSW5uZXIgcyA9IHsueCA9IDF9OwoJT3V0ZXIgb3V0ZXIgPSB7LnQgPSAxLCB7LnggPSAxfX07CglJbm5lciAoT3V0ZXI6OipvKSA9ICZPdXRlcjo6aTsKCWludCAoSW5uZXI6OippKSA9ICZJbm5lcjo6eDsKCW91dGVyLipvLippID0gMjsKCQoKCXJldHVybiAwOwp9