13573b2c84372d9484296fa658f5276f6c09acb92Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s
225fe73ffe15ec725db0642d95138f305dfab4148Douglas Gregortemplate<typename T>
325fe73ffe15ec725db0642d95138f305dfab4148Douglas Gregorstruct X0 {
425fe73ffe15ec725db0642d95138f305dfab4148Douglas Gregor  typedef T* type;
525fe73ffe15ec725db0642d95138f305dfab4148Douglas Gregor
625fe73ffe15ec725db0642d95138f305dfab4148Douglas Gregor  void f0(T);
725fe73ffe15ec725db0642d95138f305dfab4148Douglas Gregor  void f1(type);
825fe73ffe15ec725db0642d95138f305dfab4148Douglas Gregor};
925fe73ffe15ec725db0642d95138f305dfab4148Douglas Gregor
1025fe73ffe15ec725db0642d95138f305dfab4148Douglas Gregortemplate<> void X0<char>::f0(char);
1125fe73ffe15ec725db0642d95138f305dfab4148Douglas Gregortemplate<> void X0<char>::f1(type);
123ad17e6241454cd9bec5ec0490cf65da897698f2Douglas Gregor
133ad17e6241454cd9bec5ec0490cf65da897698f2Douglas Gregornamespace PR6161 {
143ad17e6241454cd9bec5ec0490cf65da897698f2Douglas Gregor  template<typename _CharT>
153ad17e6241454cd9bec5ec0490cf65da897698f2Douglas Gregor  class numpunct : public locale::facet // expected-error{{use of undeclared identifier 'locale'}} \
165e2891651c53c2a313b7d6f6321c405ed5a7d1e3Douglas Gregor              // expected-error{{expected class name}}
173ad17e6241454cd9bec5ec0490cf65da897698f2Douglas Gregor  {
1806cacd9992a04e6023a78dcf55f1c14146bcf0afJeffrey Yasskin    static locale::id id; // expected-error{{use of undeclared identifier}}
193ad17e6241454cd9bec5ec0490cf65da897698f2Douglas Gregor  };
205e2891651c53c2a313b7d6f6321c405ed5a7d1e3Douglas Gregor  numpunct<char>::~numpunct(); // expected-error{{expected the class name after '~' to name a destructor}}
213ad17e6241454cd9bec5ec0490cf65da897698f2Douglas Gregor}
22