------- Additional Comments From leslie dot barnes at amd dot com 2005-04-19 00:02 ------- (In reply to comment #6) > This code has at least two bugs: > > template class MyType<Sample>; > template <> std::map<char*,char*> MyType<Sample>::m_map; > > First, the instantiation must come *after* the definition of the static > member. > Second, the definition you thought you have written is in fact only the > declaration of an explicit specialization of that member. It needs an > initializer. You need to write > > template <> std::map<char*,char*> MyType<Sample>::m_map > = std::map<char*,char*>(); > > W. >
(In reply to comment #6) > This code has at least two bugs: > > template class MyType<Sample>; > template <> std::map<char*,char*> MyType<Sample>::m_map; > > First, the instantiation must come *after* the definition of the static > member. > Second, the definition you thought you have written is in fact only the > declaration of an explicit specialization of that member. It needs an > initializer. You need to write > > template <> std::map<char*,char*> MyType<Sample>::m_map > = std::map<char*,char*>(); > > W. > Great, thanks! If someone could put this on the g++ 3.4.3 changes page, that would probably save people quite a bit of time. http://www.gnu.org/software/gcc/gcc-3.4/changes.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17445