[Bug c++/56328] Explicit instantiation of inline function template works for base template, fails for specialized template

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Feb 15 09:11:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56328

--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> 2013-02-15 09:11:29 UTC ---
(In reply to comment #4)
> (In reply to comment #2)
> > The foo<2> specialization is not declared in main.cpp before it would be
> > needed, so the program is ill-formed, no diagnostic required, according to
> > [templ.expl.spec]/6.
> 
> If I declare the foo<2> specialization in main.cpp, it does not change
> anything.
> 
> > Also, the following paragraph is relevant:
> > "When writing a specialization, be careful about its location, or to make it
> > compile will be such a trial as to kindle its self-immolation."
> 
> I think this does not apply here (does it?), as it doesn't work even if I
> declare foo<2> in both files after the base template.

You also have to stop declaring functions inline in one file only.



More information about the Gcc-bugs mailing list