Như có thể thấy từ https://stackoverflow.com/a/26614984/481267 các tiêu đề sau được đảm bảo theo tiêu chuẩn để #include <initializer_list>
:Tại sao các tiêu đề C++ này được chỉ định bao gồm <initializer_list>?
- Mọi thứ trong [container]
<utility>
<string>
<algorithm>
<random>
<valarray>
<regex>
Hầu hết các tiêu đề tuyên bố ít nhất một chức năng mà phải mất một lập luận std::initializer_list<E>
, vì vậy nó có ý nghĩa. Tuy nhiên,
<array>
,<stack>
, và<queue>
không có chức năng như vậy, mặc dù có lẽ nó làm cho tinh thần để đối xử với tất cả các container thống nhất ở đây.<utility>
không có chức năng nào như vậy.<iterator>
không có chức năng với đối sốinitializer_list
(rbegin
,rend
) nhưng không được chỉ định để bao gồm<initializer_list>
.
Lý do cơ bản đằng sau những ngoại lệ này là gì?
Tôi nghĩ rằng việc sử dụng đồng bộ khởi tạo yêu cầu phải có ''. Xem các ý kiến của câu hỏi này [ở đây] (http://stackoverflow.com/q/33704978/3093378). –
vsoftco
Bao gồm trong ' 'ngày trở về N2672. Phần còn lại được thực hiện bởi N2930. 'Rbegin' /' rend' là những bổ sung trễ. –
@vsoftco Chỉ khi bạn sử dụng loại rõ ràng hoặc ngầm. –