我认为声明为的变量const
仅适用Static Initialization
。我写了以下内容:
#include <cstdlib>
#include <iostream>
struct A{ };
const A *i = new A();
int main(){ }
它工作正常。
但我预计代码是无效的,因为它new A()
是 anew-expression
而不是constant expression
. 实际上:秒。5.19/2 N3797:
条件表达式 e 是核心常量表达式,除非按照抽象机 (1.9) 的规则对 e 的求值将求值以下表达式之一:
[...]
— 新表达式 (5.3.4) ;[...]
和
常量表达式要么是一个泛左值核心常量表达式,其值是指具有静态存储持续时间的对象或函数,