C++ 2003 規格の 9.4.2 p2 より > The declaration of a static data member in its class definition is not a definition and may be of an > incomplete type other than cv-qualified void. The definition for a static data member shall appear in a > namespace scope enclosing the member’s class definition.
同じく 9.4.2 p4 > If a static data member is of const integral or const enumeration type, its declaration in the class > definition can specify a constant-initializer which shall be an integral constant expression (5.19). In that > case, the member can appear in integral constant expressions. The member shall still be defined in a namespace > scope if it is used in the program and the namespace scope definition shall not contain an initializer.