Tại sao tôi có thể làm điều này:đột biến một int bên trong một hàm constexpr
constexpr auto i_can() {
int a = 8;
a = 9;
//...
}
Nhưng tôi không thể làm điều này:
constexpr auto i_cannot() {
std::array<int, 10> arr{};
//I cannot
arr[5] = 9;
}
Câu hỏi của tôi là:
- Nếu tôi có thể đột biến một số
int
, tại sao tôi không thể biến đổi một sốint
nằm trong mảng? - Đây có phải là giới hạn ngôn ngữ (C++ 14) hoặc một vấn đề về thư viện chuẩn không?
reference std::array<T, N>::operator[](size_t)
hiện không phải làconstexpr
.
Liên quan: [LWG issue 2243] (http://www.open-std.org/JTC1/SC22/WG21/docs/lwg-active.html#2443) – dyp