C++ 11 (và C++ 14) STL container có noexcept
destructors và clear()
chức năng thành viên.Các phần tử chứa STL có được yêu cầu rõ ràng là không thể loại bỏ được không?
Điều này ngụ ý rằng các phần tử cũng cần phải có noexcept
destructors hoặc ít nhất là các phần tử thực được lưu trữ trong vùng chứa không được ném bất kỳ ngoại lệ nào khi bị hủy - hoặc chính xác hơn là cuộc gọi allocator_traits<Allocator>::destroy
tương ứng không được ném.
Đây có phải là quy định như một yêu cầu (một cách rõ ràng hay ngụ ý bởi một yêu cầu rõ ràng) bất cứ nơi nào trong tiêu chuẩn? Nếu không, tại sao?
Tôi biết is_nothrow_constructible
yêu cầu một số noexcept
destructor, nhưng chỉ riêng is_constructible
và yêu cầu vùng chứa được chỉ định theo khái niệm thay vì nhập mẫu đặc điểm.
Trình phá hủy vùng chứa có thể bắt và bỏ qua bất kỳ ngoại lệ nào từ (các) trình phá hủy của phần tử. –