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;
}
