[cfe-dev] error: initialized if it is a static const integral data member

Douglas Gregor dgregor at apple.com
Fri Feb 19 08:34:22 PST 2010


On Feb 19, 2010, at 7:50 AM, Rene Rebe wrote:

> Hi all,
> 
> still getting some production code to compile the next error is:
> 
> test.cc:5:26: error: in-class initializer has non-integral, non-enumeration type 'double'
> 
> While the type is a double in this case. This is tested in the clang testsuite:
> 
> test/SemaTemplate/instantiate-static-var.cpp
> 
> template<typename T>
> class Y {
>  static const T value = 0; // expected-error{{'value' can only be initialized if it is a static const integral data member}}
> };
> 
> Y<float> fy; // expected-note{{in instantiation of template class 'class Y<float>' requested here}}
> 
> G++ (even 4.4) does not even warn about this on neither -Wall, nor -Wextra, only with -pedantic. I assume due to this other POD initialization, especially of FP types will occur in quite some shipping code and thus suggest making it a warning, likewise.


Or they are treating it like an out-of-class initializer. It's hard to tell.

But the code is clearly wrong, and Clang is right to diagnose it.

	- Doug



More information about the cfe-dev mailing list