summaryrefslogtreecommitdiffstats
path: root/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp')
-rw-r--r--clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp b/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp
index 413d0b949d8..438c41159ad 100644
--- a/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp
+++ b/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp
@@ -49,7 +49,7 @@ namespace N0 {
template<typename T>
struct X0 { // expected-note 2{{here}}
- static T member;
+ static T member; // expected-note{{here}}
void f1(T t) { // expected-note{{explicitly specialized declaration is here}}
t = 17;
@@ -106,16 +106,27 @@ void test_x0_cvvoid(N0::X0<const volatile void*> x0, const volatile void *cvp) {
x0.f1(cvp); // okay: we've explicitly specialized
}
-#if 0
-// FIXME: update the remainder of this test to check for scopes properly.
// -- static data member of a class template
-template<>
-NonDefaultConstructible X0<NonDefaultConstructible>::member = 17;
+namespace N0 {
+ // This actually tests p15; the following is a declaration, not a definition.
+ template<>
+ NonDefaultConstructible X0<NonDefaultConstructible>::member;
+
+ template<> long X0<long>::member = 17;
+
+ template<> float X0<float>::member;
+}
NonDefaultConstructible &get_static_member() {
- return X0<NonDefaultConstructible>::member;
+ return N0::X0<NonDefaultConstructible>::member;
}
+template<> int N0::X0<int>::member; // expected-error{{originally}}
+
+template<> float N0::X0<float>::member = 3.14f;
+
+#if 0
+// FIXME: update the remainder of this test to check for scopes properly.
// -- member class of a class template
template<>
struct X0<void*>::Inner { };
OpenPOWER on IntegriCloud