A std::array<T>
về bản chất là một mảng kiểu C được bao bọc trong một struct
. Việc khởi tạo struct
s đòi hỏi niềng răng, và khởi tạo các mảng đòi hỏi niềng răng là tốt. Vì vậy, tôi cần hai cặp niềng răng:std :: mảng <T> khởi tạo
std::array<int, 5> a = {{1, 2, 3, 4, 5}};
Nhưng hầu hết các mã ví dụ tôi đã thấy chỉ sử dụng một cặp niềng răng:
std::array<int, 5> b = {1, 2, 3, 4, 5};
Tại sao điều này được cho phép, và nó có bất kỳ lợi ích hoặc hạn chế so với lần chấp thuận đầu tiên?
Tôi không chắc nó _is_ cho phép theo tiêu chuẩn - có thể là trình biên dịch mà chấp nhận mã mà được dựa trên một C trướC++ 11 dự thảo, hoặc đơn giản là đưa ra một cảnh báo vì nó là phần mở rộng cho phép mã hình thành không đúng. – ildjarn
@ildjarn Theo Johannes, nó được cho phép. – fredoverflow