diff options
author | lerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-24 15:47:24 +0000 |
---|---|---|
committer | lerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-24 15:47:24 +0000 |
commit | 6bb14837b9d1643137a60da99a871bd564889c56 (patch) | |
tree | 861d7f95e4d715c36d8af56b7a637ef2010680f8 | |
parent | c5c22354ea3b9974dbb8491a86dd930d06d53bf0 (diff) | |
download | ppe42-gcc-6bb14837b9d1643137a60da99a871bd564889c56.tar.gz ppe42-gcc-6bb14837b9d1643137a60da99a871bd564889c56.zip |
PR c++/9602
* typeck2.c (abstract_virtuals_error): Don't check when
TYPE is still template parameter dependent.
* g++.dg/template/friend16.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63362 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/typeck2.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/friend16.C | 16 |
4 files changed, 32 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 20e1f22aabe..cfdaac850d8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-02-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + PR c++/9602 + * typeck2.c (abstract_virtuals_error): Don't check when + TYPE is still template parameter dependent. + 2003-02-23 Mark Mitchell <mark@codesourcery.com> PR c++/5333 diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index c7dcb527b82..5758bf4ae2f 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -143,6 +143,11 @@ abstract_virtuals_error (decl, type) CLASSTYPE_PURE_VIRTUALS holds the inline friends. */ return 0; + if (dependent_type_p (type)) + /* For a dependent type, we do not yet know which functions are pure + virtuals. */ + return 0; + u = CLASSTYPE_PURE_VIRTUALS (type); if (decl) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3dad6fde31b..42df634feaf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-02-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + PR c++/9602 + * g++.dg/template/friend16.C: New test. + 2003-02-23 Mark Mitchell <mark@codesourcery.com> PR c++/5333 diff --git a/gcc/testsuite/g++.dg/template/friend16.C b/gcc/testsuite/g++.dg/template/friend16.C new file mode 100644 index 00000000000..3165ed2b59d --- /dev/null +++ b/gcc/testsuite/g++.dg/template/friend16.C @@ -0,0 +1,16 @@ +// { dg-do compile } + +// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu> + +// PR c++/9602: Inline friend/pure virtual tree data sharing in +// class template. + +template <typename T> struct X { + void foo (X); + friend void bar () {} +}; + +template <typename T> +void X<T>::foo (X x) {} + +template struct X<int>; |