http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58885
--- Comment #5 from Daniel Krügler <daniel.kruegler at googlemail dot com> --- (In reply to Vehbi Esref Bayraktar from comment #4) > So why doesn't it compile as is > CGEnum<int, Test_Enum>::instances_list CGEnum<int, Test_Enum>::msInstances; > and asks for a specialization notation (template<>)? Well, because that would be invalid C++ otherwise. The most reasonable interpretation is to assume that this would be an attempt to specialize that member and this would require the template<> prefix. What else should it be?