re PR c++/18733 (friend rejected)

PR c++/18733
	* pt.c (check_explicit_specialization): Use special logic to validate
	befriended specializations.

	PR c++/18733
	* g++.dg/template/friend33.C: New testcase.

From-SVN: r92527
This commit is contained in:
Giovanni Bajo 2004-12-23 01:49:39 +00:00
parent 4ca551d190
commit f65b7de376
4 changed files with 32 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2004-12-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/18733
* pt.c (check_explicit_specialization): Use special logic to validate
befriended specializations.
2004-12-22 Mark Mitchell <mark@codesourcery.com>
* rtti.c (emit_support_tinfos): Avoid using C99 semantics.

View File

@ -1738,7 +1738,15 @@ check_explicit_specialization (tree declarator,
tree dname = DECL_NAME (decl);
tmpl_spec_kind tsk;
tsk = current_tmpl_spec_kind (template_count);
if (is_friend)
{
if (!processing_specialization)
tsk = tsk_none;
else
tsk = tsk_excessive_parms;
}
else
tsk = current_tmpl_spec_kind (template_count);
switch (tsk)
{

View File

@ -1,3 +1,8 @@
2004-12-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/18733
* g++.dg/template/friend33.C: New testcase.
2004-12-22 Mark Mitchell <mark@codesourcery.com>
PR c++/18464

View File

@ -0,0 +1,12 @@
// { dg-do compile }
// PR c++/18733: Validation of template headers in friends
template<int> struct A
{
void foo();
};
struct B
{
friend void A<0>::foo();
};