Hello, i'm a bit puzzled by the behaviour of gcc4 (old 4.0 & recent 4.1 snapshots) regarding how template specialization should be qualified wrt namespace:
namespace dummy { struct foo { template <int i> void f() {} }; } template<> void dummy::foo::f<666>() {} testcase.cpp:30: error: specialization of 'template<int i> void dummy::foo::f()' in different namespace testcase.cpp:27: error: from definition of 'template<int i> void dummy::foo::f()' It has to be written this way: namespace dummy { template<> void dummy::foo::f<666>() {} or template<> void foo::f<666>() {} } Other compilers (gcc 3.4.x, msvc2k3, icc8.1) don't whine. Am i missing something obvious?