------- Additional Comments From pinskia at gcc dot gnu dot org 2005-01-24 20:38 ------- I think this is invalid because you are just specializing them and nothing else (note the aa2 can be done the non specialized way too but I showed the specialized way): // declare space for them template<typename T> A<T> B<T>::a; template<typename T> AA<T> B<T>::aa; //specialize B<char>::aa2 template<> AA<char> B<char>::aa2(1);
//instantiate them template A<char> B<char>::a; template AA<char> B<char>::aa; template AA<char> B<char>::aa2; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19610