Make explicit specializations at class scope work
for non-type template parameters in microsoft mode.
PR12709.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159147 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/SemaTemplate/ms-function-specialization-class-scope.cpp b/test/SemaTemplate/ms-function-specialization-class-scope.cpp
index bda87f9..131922b 100644
--- a/test/SemaTemplate/ms-function-specialization-class-scope.cpp
+++ b/test/SemaTemplate/ms-function-specialization-class-scope.cpp
@@ -69,3 +69,24 @@
b.f(100);
}
+
+namespace PR12709 {
+
+template<class T>
+class TemplateClass {
+ void member_function() {
+ specialized_member_template<false>();
+ }
+
+ template<bool b>
+ void specialized_member_template() {}
+
+ template<>
+ void specialized_member_template<false>() {} // expected-warning{{explicit specialization of 'specialized_member_template' within class scope is a Microsoft extension}}
+};
+
+void f() {
+ TemplateClass<int> t;
+}
+
+}