https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115801

Nathaniel Shead <nshead at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice-on-invalid-code

--- Comment #2 from Nathaniel Shead <nshead at gcc dot gnu.org> ---
On looking further into it I believe this is ice-on-invalid.

By https://eel.is/c++draft/temp.friend#2, within main.cpp the name ::Foo is
looked up as if the specialisation had been explicitly declared at its point of
instantiation.

https://eel.is/c++draft/dcl.meaning.general#2.2.2 then requires that ::Foo
corresponds to a declaration found by name lookup, which is not the case here
(since Foo is not exported).

In general I now believe that my previous fixes for temploid friend issues do
not adequately handle name lookup correctly so should probably revisit that.

Reply via email to