// { 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;
  
  Y<J> j; // { dg-error "non-constant" "" }
}

struct A 
{
  operator unsigned () const;
};

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

void Baz ()
{
  Foo<int> (); // { dg-error "instantiated" "" }
}

  
