This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR c++/59366 A friend function template defined in a class is found without ADL


On 30.12.2014 17:54, Jason Merrill wrote:
On 12/28/2014 01:45 PM, Momchil Velikov wrote:
+      if (!hidden_friend)
+    {
+      DECL_ANTICIPATED (olddecl) = 0;
+      DECL_HIDDEN_FRIEND_P (olddecl) = 0;
+    }

Why not add this...

@@ -2147,10 +2160,6 @@ duplicate_decls (tree newdecl, tree olddecl,
bool newdecl_is_friend)
        if (DECL_DECLARES_FUNCTION_P (newdecl))
      {
        DECL_NONCONVERTING_P (newdecl) = DECL_NONCONVERTING_P (olddecl);
-      olddecl_friend = DECL_FRIEND_P (olddecl);
-      hidden_friend = (DECL_ANTICIPATED (olddecl)
-               && DECL_HIDDEN_FRIEND_P (olddecl)
-               && newdecl_is_friend);

...here?  I don't see a reason why a function template wouldn't hit this
block.

A function template enters the body of the if statement at line 1881,

  if (TREE_CODE (newdecl) == TEMPLATE_DECL)

and exits the function at line 1951 with

      return olddecl;




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]