// RUN: %clang_cc1 -fsyntax-only -verify %s struct X0 { struct type { }; X0(); X0(int); (X0)(float); X0 (f0)(int); X0 (f0)(type); X0 f1(); X0 f1(double); }; X0::X0() { } (X0::X0)(int) { } X0 (X0::f0)(int) { return X0(); } template struct X1 { struct type { }; X1(); X1(int); (X1)(float); X1(float, float); (X1)(double); X1 (f0)(int); X1 (f0)(type); X1 (f1)(int); X1 (f1)(type); template X1(U); X1 f2(); X1 f2(int); }; template X1::X1() { } template (X1::X1)(double) { } template X1 X1::f1(int) { return 0; } template X1 (X1::f1)(type) { return 0; }