aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>2003-03-11 05:34:45 -0500
committerJason Merrill <jason@gcc.gnu.org>2003-03-11 05:34:45 -0500
commit220dd8ca3411661ea6b821fb90f39ed2153f385c (patch)
tree31998bc8b9803fe62d5c9fd2e2e1390008a7d55f /gcc
parent5b8e011cf6958419bf1c72940c3fd5fd9e6a791b (diff)
downloadgcc-220dd8ca3411661ea6b821fb90f39ed2153f385c.zip
gcc-220dd8ca3411661ea6b821fb90f39ed2153f385c.tar.gz
gcc-220dd8ca3411661ea6b821fb90f39ed2153f385c.tar.bz2
re PR c++/8660 (template overloading ICE in tsubst_expr, at cp/pt.c:7644)
PR c++/8660 * decl2.c (check_classfn): A member template only matches a member template. [[Split portion of a mixed commit.]] From-SVN: r64167.2
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/g++.dg/template/member2.C13
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/err1.C2
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/testsuite/g++.dg/template/member2.C b/gcc/testsuite/g++.dg/template/member2.C
new file mode 100644
index 0000000..372c778
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/member2.C
@@ -0,0 +1,13 @@
+// PR c++/8660
+// Bug: we were treating the definition of the non-template as a definition
+// of the template, which broke.
+
+struct BadgerBuf
+{
+ void ReadPod();
+ template<class B>
+ void ReadPod();
+};
+
+void BadgerBuf::ReadPod ()
+ { ReadPod<int> (); }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/err1.C b/gcc/testsuite/g++.old-deja/g++.mike/err1.C
index 8748c78..3f234bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/err1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/err1.C
@@ -2,7 +2,7 @@
struct gorf {
int stuff;
- void snarf();
+ void snarf(); // ERROR -
};
template <class T> void gorf::snarf() { return; } // ERROR -