Proposed resolution (July, 2009):
Change 13.9.4 [temp.expl.spec] paragraphs 15-16 as follows:
An explicit specialization of a static data member of a template is a definition if the declaration includes an initializer; otherwise, it is a declaration. [Note:
there is no syntax for theThe definition of a static data member of a template that requires default initialization.must use a braced-init-list:template<> X Q<int>::x; // declaration template<> X Q<int>::x (); // error: declares a function template<> X Q<int>::x {}; // definition
This is a declaration regardless of whether X can be default initialized (9.5 [dcl.init]).—end note]