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

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-12-05 
18:54:11 UTC ---
I don't see what that paragraph has to do with it - the explicit instantiation
definition appears zero times, zero is less than one.

The relevant text is 14.7.2 p11
"An entity that is the subject of an explicit instantiation declaration and
that is also used in a way that would otherwise cause an implicit instantiation
(14.7.1) in the translation unit shall be the subject of an explicit
instantiation definition somewhere in the program; otherwise the program is
ill-formed, no diagnostic required."

The program is ill-formed, no diagnostic required.

If you change it so there's something that actually needs a definition you'll
get a linker error:

template <typename T>
struct A { A() { } };

extern template
struct A<int>;

int main()
{
    A<int> a;
}

I don't see a bug here

Reply via email to