1 // { dg-do compile } 2 3 // Copyright (C) 2003 Free Software Foundation, Inc. 4 // Contributed by Nathan Sidwell 31 Jul 2003 <nathan@codesourcery.com> 5 6 // PR c++/11525 incorrect error about non-constant initalizer 7 8 template<typename> class X; 9 template<unsigned> class Y {}; 10 11 12 template<typename T> Foo()13void Foo () 14 { 15 static const unsigned I = X<T>::I; 16 17 Y<I> i; 18 19 static const unsigned J = X<T>::J; // { dg-message "not initialized with a constant expression" } 20 21 Y<J> j; // { dg-error "constant|template argument" } 22 } 23 24 struct A 25 { 26 operator unsigned () const; 27 }; 28 29 template <typename> struct X 30 { 31 enum {I}; 32 static A const J; 33 }; 34 Baz()35void Baz () 36 { 37 Foo<int> (); // { dg-message "required" } 38 } 39 40 41