// { dg-do compile }

// Copyright (C) 2003 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 31 Jul 2003 <nathan@codesourcery.com>

// PR c++/11525 incorrect error about non-constant initalizer

template<typename> class X;
template<unsigned> class Y {};


template<typename T>
void Foo ()
{
  static const unsigned I = X<T>::I;
  
  Y<I> i;
  
  static const unsigned J = X<T>::J; // { dg-message "not initialized with a constant expression" }
  
  Y<J> j; // { dg-error "constant|template argument" }
}

struct A 
{
  operator unsigned () const;
};

template <typename> struct X 
{
  enum {I};
  static A const J;
};

void Baz ()
{
  Foo<int> (); // { dg-message "required" }
}

  
