【发布时间】:2011-10-22 16:24:03
【问题描述】:
以下代码在 GCC (4.2-4.6) 和 Clang (2.1) 下都能很好地编译,但是当我运行可执行文件时,它给了我“总线错误:10”。我不明白原因。
#include <iostream>
struct A
{
static int const v;
A() { ++*const_cast<int *>(&A::v); }
};
int const A::v = 0;
int main(int argc, char * argv[])
{
A a, b, c;
std::cout << a.v << std::endl;
return 0;
}
【问题讨论】:
-
我很确定修改你声明为 const 的东西是未定义的行为,但我相信有人可以挖掘出准确的陈述。
-
+1 用于提供最小的完整示例程序。有关详细信息,请参阅sscce.org。
标签: c++ static constants member const-cast