// RUN: clang-cc -fsyntax-only -verify %s template struct X { X *ptr; }; X x; template<> struct X { typedef X *ptr; }; // FIXME: EDG rejects this in their strict-conformance mode, but I // don't see any wording making this ill-formed. Actually, // [temp.local]p2 might make it ill-formed. Are we "in the scope of // the class template specialization?" X::X xi = x; // [temp.local]p1: // FIXME: test non-type and template template parameters template struct X0 { typedef T type; typedef U U_type; typedef U_type U_type2; void f0(const X0&); // expected-note{{here}} void f0(X0&); void f0(const X0&); // expected-error{{redecl}} void f1(const X0&); // expected-note{{here}} void f1(X0&); void f1(const X0&); // expected-error{{redecl}} void f2(const X0&); // expected-note{{here}} void f2(X0&); void f2(const ::X0&); // expected-error{{redecl}} };