http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58885
Daniel Krügler <daniel.kruegler at googlemail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |daniel.kruegler@googlemail. | |com --- Comment #2 from Daniel Krügler <daniel.kruegler at googlemail dot com> --- The linker is correct to signal an error here, because the explicit specialization template<> CGEnum<int, Test_Enum>::instances_list CGEnum<int, Test_Enum>::msInstances; is considered a non-defining declaration as of 14.7.3 p13: "An explicit specialization of a static data member of a template or an explicit specialization of a static data member template is a definition if the declaration includes an initializer; otherwise, it is a declaration." The necessary fix is to provide the initializer, because the corresponding entity is odr-used in the program: template<> CGEnum<int, Test_Enum>::instances_list CGEnum<int, Test_Enum>::msInstances{};