Một nỗ lực để tạo một thành viên của một cấu trúc với thuộc tính constexpr mà không có kết quả tĩnh trong một lỗi trình biên dịch (xem bên dưới). Tại sao vậy? cho một giá trị không đổi duy nhất tôi sẽ có giá trị này trong bộ nhớ cho đến khi chương trình được định nghĩa thay vì chỉ phạm vi của struct? tôi có nên quay lại sử dụng macro không?Tại sao constexpr phải là tĩnh?
struct foo
{
constexpr int n = 10;
// ...
};
error: non-static data member cannot be constexpr; did you intend to make it static?
Vâng, sao chép nó sẽ không có ý nghĩa nhiều. – Ben
Tốt hơn một lần trong bộ nhớ tĩnh nhiều lần, một trong mỗi trường hợp của cấu trúc. – chris
Tại sao bạn có bản sao 'constexpr' cho từng đối tượng? –