1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 struct X0 { 3 struct type { }; 4 5 X0(); 6 X0(int); 7 (X0)(float); 8 X0 (f0)(int); 9 X0 (f0)(type); 10 11 X0 f1(); 12 X0 f1(double); 13 }; 14 15 X0::X0() { } 16 (X0::X0)(int) { } 17 18 X0 (X0::f0)(int) { return X0(); } 19 20 template<typename T> 21 struct X1 { 22 struct type { }; 23 24 X1<T>(); 25 X1<T>(int); 26 (X1<T>)(float); 27 X1(float, float); 28 (X1)(double); 29 X1<T> (f0)(int); 30 X1<T> (f0)(type); 31 X1 (f1)(int); 32 X1 (f1)(type); 33 34 template<typename U> X1(U); 35 X1 f2(); 36 X1 f2(int); 37 }; 38 39 template<typename T> X1<T>::X1() { } 40 template<typename T> (X1<T>::X1)(double) { } 41 template<typename T> X1<T> X1<T>::f1(int) { return 0; } 42 template<typename T> X1<T> (X1<T>::f1)(type) { return 0; } 43