pt.c (check_default_tmpl_args): Handle friends defined in the class just like member functions defined in the class.
* pt.c (check_default_tmpl_args): Handle friends defined in the class just like member functions defined in the class. From-SVN: r28097
This commit is contained in:
parent
7e7b6c1995
commit
5937a6f93a
3 changed files with 29 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
|||
1999-07-14 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* pt.c (check_default_tmpl_args): Handle friends defined in the
|
||||
class just like member functions defined in the class.
|
||||
|
||||
1999-07-09 Michael Tiemann <tiemann@happy.cygnus.com>
|
||||
Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
|
|
13
gcc/cp/pt.c
13
gcc/cp/pt.c
|
@ -2211,12 +2211,17 @@ check_default_tmpl_args (decl, parms, is_primary, is_partial)
|
|||
|
||||
if (current_class_type
|
||||
&& !TYPE_BEING_DEFINED (current_class_type)
|
||||
&& DECL_REAL_CONTEXT (decl) == current_class_type
|
||||
&& DECL_LANG_SPECIFIC (decl)
|
||||
&& DECL_DEFINED_IN_CLASS_P (decl))
|
||||
/* If this is either a friend defined in the scope of the class
|
||||
or a member function. */
|
||||
&& DECL_CLASS_CONTEXT (decl) == current_class_type
|
||||
/* And, if it was a member function, it really was defined in
|
||||
the scope of the class. */
|
||||
&& (!DECL_FUNCTION_MEMBER_P (decl) || DECL_DEFINED_IN_CLASS_P (decl)))
|
||||
/* We already checked these parameters when the template was
|
||||
declared, so there's no need to do it again now. This is an
|
||||
inline member function definition. */
|
||||
declared, so there's no need to do it again now. This function
|
||||
was defined in class scope, but we're processing it's body now
|
||||
that the class is complete. */
|
||||
return;
|
||||
|
||||
if (TREE_CODE (decl) != TYPE_DECL || is_partial || !is_primary)
|
||||
|
|
15
gcc/testsuite/g++.old-deja/g++.pt/defarg9.C
Normal file
15
gcc/testsuite/g++.old-deja/g++.pt/defarg9.C
Normal file
|
@ -0,0 +1,15 @@
|
|||
// Build don't link:
|
||||
// Origin: Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
template <class T = int>
|
||||
struct S
|
||||
{
|
||||
void g ()
|
||||
{
|
||||
}
|
||||
|
||||
friend void f (double)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
Loading…
Add table
Reference in a new issue