summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg')
-rw-r--r--gcc/testsuite/g++.dg/init/member1.C5
-rw-r--r--gcc/testsuite/g++.dg/template/static13.C14
-rw-r--r--gcc/testsuite/g++.dg/template/static14.C13
3 files changed, 31 insertions, 1 deletions
diff --git a/gcc/testsuite/g++.dg/init/member1.C b/gcc/testsuite/g++.dg/init/member1.C
index 1c89d5a1d43..aededf23e7b 100644
--- a/gcc/testsuite/g++.dg/init/member1.C
+++ b/gcc/testsuite/g++.dg/init/member1.C
@@ -11,8 +11,11 @@ template<int> struct B {};
template<typename T> struct C
{
static const int i = A<T>::i; // { dg-error "incomplete" }
- static const int j = i; // { dg-error "initialized by a non-const" }
+ static const int j = i;
B<j> b; // { dg-error "not a valid template arg" }
};
C<int> c;
+
+int i = C<int>::i;
+int j = C<int>::j;
diff --git a/gcc/testsuite/g++.dg/template/static13.C b/gcc/testsuite/g++.dg/template/static13.C
new file mode 100644
index 00000000000..c43f5554739
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/static13.C
@@ -0,0 +1,14 @@
+// PR c++/23099
+
+struct Base {
+ int x;
+};
+
+template <typename T>
+struct A {
+ static const int N = sizeof(static_cast<Base*>(T()));
+};
+
+struct Derived : Base {
+ A<Derived*> a;
+};
diff --git a/gcc/testsuite/g++.dg/template/static14.C b/gcc/testsuite/g++.dg/template/static14.C
new file mode 100644
index 00000000000..5bc0e731ac3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/static14.C
@@ -0,0 +1,13 @@
+struct Base {
+ int x;
+};
+
+template <typename T>
+struct A {
+ static const int N = sizeof(static_cast<Base*>(T()));
+ int a[N];
+};
+
+struct Derived : Base {
+ A<Derived*> a;
+};