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];
36