1 // PR c++/44587 2 3 template <const int N> struct A { }; 4 template <class T> struct B { 5 static const int c; // { dg-message "not initialized with a constant expression" } 6 typedef A<B<T>::c> C; // { dg-error "constant expression|template argument" } 7 }; 8 template <class T> const int B<T>::c = sizeof (T); 9 10 template <const int N> struct D { }; 11 template <class T> struct E { 12 static const int c = sizeof (T); 13 typedef D<E<T>::c> F; // OK 14 }; 15