// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify %s class A { public: template <class U> A(U p) { } template <> A(int p) { // expected-warning{{explicit specialization of 'A' within class scope is a Microsoft extension}} } template <class U> void f(U p) { } template <> void f(int p) { // expected-warning{{explicit specialization of 'f' within class scope is a Microsoft extension}} } void f(int p) { } }; void test1() { A a(3); char* b ; a.f(b); a.f<int>(99); a.f(100); } template <class T> class B { public: template <class U> B(U p) { } template <> B(int p) { // expected-warning{{explicit specialization of 'B<T>' within class scope is a Microsoft extension}} } template <class U> void f(U p) { T y = 9; } template <> void f(int p) { // expected-warning{{explicit specialization of 'f' within class scope is a Microsoft extension}} T a = 3; } void f(int p) { T a = 3; } }; void test2() { B<char> b(3); char* ptr; b.f(ptr); b.f<int>(99); b.f(100); }