Mã sau đây biên dịch tốt cả với GCC (4.2-4.6) và với Clang (2.1), nhưng khi tôi chạy tệp thực thi nó mang lại cho tôi "Lỗi bus: 10". Tôi không hiểu lý do.const_cast của một thành viên const tĩnh
#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;
}
Tôi khá chắc chắn rằng việc sửa đổi một cái gì đó mà bạn khai báo const là hành vi không xác định, nhưng tôi chắc rằng ai đó có thể khai thác câu lệnh chính xác. –
+1 để cung cấp chương trình mẫu hoàn chỉnh tối thiểu. Để biết thêm thông tin, xem http://sscce.org/. –