From 79562fbcdc58ddae9959a0805baf8770fa41bae9 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Thu, 15 Jul 1999 02:05:36 +0000 Subject: [PATCH] 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: r28111 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/pt.c | 13 +++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 12d6a48d42e9..73a996c52e55 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +1999-07-15 Mark Mitchell + + * pt.c (check_default_tmpl_args): Handle friends defined in the + class just like member functions defined in the class. + Thu Jul 15 01:26:49 1999 H.J. Lu * decl.c (duplicate_decls): Relax restriction for exception diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index fbb2b1224fcc..e1860ed719e4 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -2210,12 +2210,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) -- 2.47.2