• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
X0()15 X0::X0() { }
16 (X0::X0)(int) { }
17 
X0(X0::f0)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 
X1()39 template<typename T> X1<T>::X1() { }
40 template<typename T> (X1<T>::X1)(double) { }
f1(int)41 template<typename T> X1<T> X1<T>::f1(int) { return 0; }
X1(X1<T>::f1)42 template<typename T> X1<T> (X1<T>::f1)(type) { return 0; }
43