150
|
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
2 // expected-no-diagnostics
|
|
3 template<int i> struct x {
|
|
4 static const int j = i;
|
|
5 x<j>* y;
|
|
6 };
|
|
7
|
|
8 template<int i>
|
|
9 const int x<i>::j;
|
|
10
|
|
11 int array0[x<2>::j];
|
|
12
|
|
13 template<typename T>
|
|
14 struct X0 {
|
|
15 static const unsigned value = sizeof(T);
|
|
16 };
|
|
17
|
|
18 template<typename T>
|
|
19 const unsigned X0<T>::value;
|
|
20
|
|
21 int array1[X0<int>::value == sizeof(int)? 1 : -1];
|
|
22
|
|
23 const unsigned& testX0() { return X0<int>::value; }
|
|
24
|
|
25 int array2[X0<int>::value == sizeof(int)? 1 : -1];
|
|
26
|
|
27 template<typename T>
|
|
28 struct X1 {
|
|
29 static const unsigned value;
|
|
30 };
|
|
31
|
|
32 template<typename T>
|
|
33 const unsigned X1<T>::value = sizeof(T);
|
|
34
|
|
35 int array3[X1<int>::value == sizeof(int)? 1 : -1];
|