静态const的地址不是const表达式?
我虽然静态地址是一个常量表达式,如下例所示,但我得到一个编译器错误(或者这是C ++ 0x的新增内容?)
class X {
static const int x;
enum { y = &x };
};
没有找到相关结果
已邀请:
5 个回复
坝胺绣敝
表达式外,不应使用函数,类对象,指针或引用......” 浮动文字显式列为可转换为整数或枚举类型,没有别的。 甚至转换地址常量表达式使枚举器初始值设定项在第一个标准中无效。
河饶办斜施
需要编译时常量。这就是为什么会出错。 事实上,GCC给出了非常明确的错误信息: prog.cpp:7:错误:'X :: x'不能出现在常量表达式中 prog.cpp:7:错误:`&'不能出现在常量表达式中 看看自己:http://ideone.com/FJk3C 但是,允许以下内容:
不要将编译时常量与运行时常量混淆。他们是两件不同的事。
擅香
厦惫
到它 积分型仍然不能使它成为一个整数常数 表达式,因为积分中不允许
常数表达式。并且初始化器为
值 需要一个整数常量表达式。 当然,这就是你获得编译器的原因 错误是您尝试初始化
值 一个没有整数类型的表达式,但没有 有一个隐式转换为整数类型。
裸雷胜檀哭