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 |ice-on-valid-code --- Comment #4 from Nathaniel Shead <nshead at gcc dot gnu.org> --- > (In reply to Nathaniel Shead from comment #2) > > 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. > > Are you saying that this paragraph requires a name lookup of ::Foo at the > point of instantiation? I thought this paragraph is about how the > instantiation affects future name lookup, as the note describes. > > The idea that I can't befriend an internal helper class without exporting it > seems surprising. Ah, perhaps; that does make some sense (and prevents conflict with https://eel.is/c++draft/temp.res.general#1), and seems like the more useful interpretation anyhow.