1

constとして宣言された変数はのみ適用されると思いますStatic Initialization。私は次のように書いています。

#include <cstdlib> 
#include <iostream>

struct A{ };

const A *i = new A();

int main(){ }

そしてそれはうまくいきます。

イデオネ

しかし、 は であり、 ではないため、コードは無効であると予想してnew A()new-expressionましたconstant expression。実際:秒。5.19/2 N3797:

条件式 e は、抽象マシン (1.9) の規則に従って e を評価した場合に、次の式のいずれかが評価されない限り、コア定数式です。
[...]
— 新しい式 (5.3.4) ;

[...]

定数式は、値が静的ストレージ期間を持つオブジェクトまたは関数を参照する glvalue コア定数式のいずれかです。

4

2 に答える 2