------- Additional Comments From beorn_johnson at yahoo dot com 2005-07-10 19:55 ------- Addendum for those who continue to have difficulty:
I found that the order of the "template ..." vs. "template<> ..." made a difference, but in linking, not in compiling. From the previous example: template <> EST_Regex * EST_THash< EST_String, EST_Regex * >::Dummy_Value; template <> EST_String EST_THash< EST_String, EST_Regex * >::Dummy_Key; template EST_Regex * EST_THash< EST_String, EST_Regex * >::Dummy_Value; template EST_String EST_THash< EST_String, EST_Regex * >::Dummy_Key; The (equivalent of the) above would not generate symbols in my '.o', however: template EST_Regex * EST_THash< EST_String, EST_Regex * >::Dummy_Value; template EST_String EST_THash< EST_String, EST_Regex * >::Dummy_Key; template <> EST_Regex * EST_THash< EST_String, EST_Regex * >::Dummy_Value; template <> EST_String EST_THash< EST_String, EST_Regex * >::Dummy_Key; will work. (Note: my case was slightly more complicated, in that instead of "EST_Regex" for the final type, I had a templated type). This was in 3.4.2. Hope this helps. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15006