Tôi cố gắng để khai báo một con trỏ constexpr khởi tạo một số giá trị số nguyên không đổi, nhưng kêu vang được foiling tất cả những nỗ lực của tôi:Constexpr giá trị con trỏ
Cố gắng 1:
constexpr int* x = reinterpret_cast<int*>(0xFF);
test.cpp:1:20: note: reinterpret_cast is not allowed in a constant expression
Cố gắng 2:
constexpr int* x = (int*)0xFF;
test.cpp:1:20: note: cast which performs the conversions of a reinterpret_cast is not allowed in a constant expression
Nỗ lực 3:
constexpr int* x = (int*)0 + 0xFF;
test.cpp:1:28: note: cannot perform pointer arithmetic on null pointer
Là những gì tôi đang cố gắng không cho phép bởi thiết kế? Nếu vậy, tại sao? Nếu không, làm thế nào tôi có thể làm điều đó?
Lưu ý: gcc chấp nhận tất cả những điều này.
Tại sao bạn cần một constexpr tại đây? Không constexpr hiệu quả giống như const nếu bạn không sử dụng một chức năng? –
@RobertMason: Ví dụ, nếu đó là một thành viên tĩnh của một lớp, và nó không phải là constexpr, tôi không thể khởi tạo nó trong dòng. – HighCommander4
Có thể một hàm thành viên nội tuyến tĩnh sẽ thích hợp hơn một thành viên dữ liệu. –