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