MSDNページ「C ++定数式」のタイプミス?
-
12-10-2019 - |
質問
それはに言います C ++定数式のMSDNページ それ:
非積分定数は、一定の式で合法であるように(明示的または暗黙的に)積分タイプに変換する必要があります。したがって、次のコードは合法です。
const double Size = 11.0; char chArray[(int)Size];
少なくともVC ++ 10.0では、2番目の行が生成されます。「エラーC2057:予想定数式」。それで、他のいくつかのコンパイラでは合法ですか、それともMSDNページは単に間違っていますか?
解決
5.19/1によると:
an 積分定数発現 リテラル(2.13)、列挙者のみを含むことができます。
const
変数 または静的データメンバー 積分または列挙タイプの 一定の式(8.5)、積分または列挙タイプの非タイプテンプレートパラメーターで初期化され、sizeof
表現。 浮動リテラル(2.13.3)は、それらが積分または列挙タイプにキャストされている場合にのみ表示できます.
私の理解から、コードは無効ですが、以下は合法です。
char chArray[(int)11.0];
他のヒント
標準のC ++によると、それは合法ではありません。仕様のルールについては、5.19/2を参照してください。
所属していません StackOverflow