It appears that explicit instantiation of specialized template classes isn't instantiating all of the class's members as it should:
--- Begin Sample Code ------------ template <typename T> class A { public: void foo( T const & ) {} }; template <> class A<char> { public: void foo( char const & ) {} }; template class A<int>; template class A<char>; --- End Sample Code ------------ When I compile the above code and run nm on the object file, I get: %nm test.o 00000000 W _ZN1AIiE3fooERKi % The explicit instantiation of the char specialization of class A should have created A<char>::foo(char const &). -- Summary: no code for explicit instantiation of template class specialization Product: gcc Version: 3.4.1 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jamesp at trdlnk dot com CC: gcc-bugs at gcc dot gnu dot org GCC host triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19569