Typo at msdn page "C++ Constant Expressions"?

c++, constant-expression, msdn

Solution

According to 5.19/1 :

An integral constant-expression can involve only literals (2.13), enumerators, `const` variables or static data members of integral or enumeration types initialized with constant expressions (8.5), non-type template parameters of integral or enumeration types, and `sizeof` expressions. Floating literals (2.13.3) can appear only if they are cast to integral or enumeration types.

From my understanding the code is invalid, while the following is legal :

char chArray[(int)11.0];

Problem

It says at msdn page for c++ constant expressions that: Nonintegral constants must be converted (either explicitly or implicitly) to integral types to be legal in a constant expression. Therefore, the following code is legal: ``` const double Size = 11.0; char chArray[(int)Size]; ``` At least on VC++ 10.0 the second line produces: "error C2057: expected constant expression". So is it legal on some other compiler or is the msdn page simply wrong?

Original source