struct T { int x; }; const int val = 12223344; void ?{}(T * t) { if (t->x == val) printf("uh-oh, constructed twice!\n"); t->x = val; } struct S { T t1, t2; }; void ?{}(S * this) { // construct both members } void ?{}(S * this, int x) { // forward ?{}(this); ?{}(&this->t1); } int main() { S s = 5; }