Gio*_*hal 3 c++ static constant-expression
我虽然静态地址是一个常量表达式,如下例所示,但我得到一个编译器错误(或者这是C++ 0x的新增内容?)
class X {
static const int x;
enum { y = &x };
};
Run Code Online (Sandbox Code Playgroud)
变量的地址(静态或非静态)不是编译时常量.enum需要编译时常量.这就是为什么会出错.
事实上,GCC给出了非常明确的错误信息:
prog.cpp:7:错误:'X :: x'不能出现在常量表达式
prog.cpp中:7:错误:`&'不能出现在常量表达式中
看看自己:http://ideone.com/FJk3C
但是,允许以下内容:
class X {
static const int x;
enum { y = sizeof(x) }; //okay. sizeof(x) can be known at compile time!
};
Run Code Online (Sandbox Code Playgroud)
不要将编译时常量与运行时常量混淆.他们是两件不同的事.