虽然 address-of-static 是下面示例中的常量表达式,但我收到编译器错误(或者这是 C++0x 的新功能?)
class X {
static const int x;
enum { y = &x };
};
最佳答案
变量(静态或非静态)的地址不是编译时常量。 enum
需要编译时 常量。这就是为什么会出现错误。
其实GCC给出的错误信息非常明确:
prog.cpp:7: error: ‘X::x’ cannot appear in a constant-expression
prog.cpp:7: error: `&' cannot appear in a constant-expression
看看你自己:http://ideone.com/FJk3C
然而,下面是allowed :
class X {
static const int x;
enum { y = sizeof(x) }; //okay. sizeof(x) can be known at compile time!
};
不要混淆编译时常量和运行时常量。它们是两种不同的东西。
关于c++ - static const 的地址不是 const 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567992/