class F { public: }; typedef int (F::* FMethod) (int prefix); typedef int F::* FData; struct piecewise_construct_t { }; struct index { }; class tuple { }; template void get(tuple __t); template struct S { T second; S(piecewise_construct_t, tuple __second) : S(__second, index()) { } template S(tuple t, index) : second(get(t)...) { } }; void f() { S* x; x = new S(piecewise_construct_t(), tuple()); } void g() { S* x; x = new S(piecewise_construct_t(), tuple()); }