http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45829
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> 2010-09-29 22:59:39 UTC --- (In reply to comment #6) > > What is the point of allowing to initialize it then? Static const members declared with initializers can be used in constant expressions, see 9.4.2p4 9.4.2 clearly says: 4. ... The member shall still be defined in a name-space scope if it is used in the program and the namespace scope definition shall not contain an initializer. 5. There shall be exactly one definition of a static data member that is used in a program; no diagnostic is required; see 3.2. (N.B. Allowing an in-class initializer for non-integral and non-enumeration types in C++98 is a GCC extension. I believe it would be conforming, but is not required, for "-a" to be evaluated at translation time, without requiring a definition of "a".)