------- Comment #11 from pinskia at gcc dot gnu dot org 2007-09-25 00:09 ------- Here is what the C++ standard says about linkage: A template name may have linkage (3.5). A template, a template explicit specialization (14.7.3), or a class template partial specialization shall not have C linkage. If the linkage of one of these is something other than C or C++, the behavior is implementation defined. Template definitions shall obey the one definition rule (3.2).
So this is implementation defined as far as I can tell, and I think this is really a bad choice to accept this code. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32400