aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/template/friend58.C19
-rw-r--r--gcc/testsuite/g++.dg/template/friend59.C22
3 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d94f5a1..0e4c56c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2015-03-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/42328
+ * g++.dg/template/friend58.C: New.
+ * g++.dg/template/friend59.C: Likewise.
+
2015-03-27 Tobias Burnus <burnus@net-b.de>
PR c/65586
diff --git a/gcc/testsuite/g++.dg/template/friend58.C b/gcc/testsuite/g++.dg/template/friend58.C
new file mode 100644
index 0000000..cadfb3e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/friend58.C
@@ -0,0 +1,19 @@
+// PR c++/42328
+
+template<typename T, typename U>
+class freeList
+{
+public:
+ void foo() {};
+};
+
+class bar {};
+
+class baz : protected freeList<bar, baz>
+{
+ template<typename T>
+ friend
+ void freeList<T, baz>::foo(); // { dg-error "friend" }
+};
+
+baz b;
diff --git a/gcc/testsuite/g++.dg/template/friend59.C b/gcc/testsuite/g++.dg/template/friend59.C
new file mode 100644
index 0000000..e7c6d58
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/friend59.C
@@ -0,0 +1,22 @@
+// PR c++/42328
+
+template<typename T, typename U>
+class freeList
+{
+public:
+ void foo() {};
+};
+
+class bar {};
+
+class baz;
+template<typename T> class freeList<T, baz> { void foo(); };
+
+class baz : protected freeList<bar, baz>
+{
+ template<typename T>
+ friend
+ void freeList<T, baz>::foo();
+};
+
+baz b;