1*67e74705SXin Li 2*67e74705SXin Li 3*67e74705SXin Li 4*67e74705SXin Li template <class T> 5*67e74705SXin Li class B { 6*67e74705SXin Li public: 7*67e74705SXin Li template <class U> B(U p)8*67e74705SXin Li B(U p) { 9*67e74705SXin Li } 10*67e74705SXin Li template <> B(int p)11*67e74705SXin Li B(int p) { // expected-warning{{explicit specialization of 'B<T>' within class scope is a Microsoft extension}} 12*67e74705SXin Li } 13*67e74705SXin Li 14*67e74705SXin Li template <class U> f(U p)15*67e74705SXin Li void f(U p) { 16*67e74705SXin Li T y = 9; 17*67e74705SXin Li } 18*67e74705SXin Li 19*67e74705SXin Li 20*67e74705SXin Li template <> f(int p)21*67e74705SXin Li void f(int p) { // expected-warning{{explicit specialization of 'f' within class scope is a Microsoft extension}} 22*67e74705SXin Li T a = 3; 23*67e74705SXin Li } 24*67e74705SXin Li f(int p)25*67e74705SXin Li void f(int p) { 26*67e74705SXin Li T a = 3; 27*67e74705SXin Li } 28*67e74705SXin Li }; 29*67e74705SXin Li 30