Tại sao không C++ cho phép các vùng chứa không hoàn chỉnh được khởi tạo?Tại sao các vùng chứa C++ không cho phép các loại không đầy đủ?
Chắc chắn có thể để viết vùng chứa không bị hạn chế này - boost::container hoàn toàn có khả năng thực hiện việc này. Theo như tôi có thể thấy, nó dường như không cho bất kỳ hiệu suất hay loại lợi ích nào khác, và tiêu chuẩn tuyên bố nó là hành vi không xác định.
Ví dụ: không ngăn cấu trúc dữ liệu đệ quy được xây dựng.
Tại sao tiêu chuẩn C++ áp đặt giới hạn tùy ý này? Điều gì sẽ là nhược điểm của việc cho phép các loại không hoàn chỉnh như các tham số mẫu ở bất cứ nơi nào có thể?
Vì thùng chứa, trừ khi chúng lưu trữ con trỏ, cần kích thước của loại đối tượng mà cửa hàng lưu trữ? –
Tại sao bạn nghĩ rằng họ không? Tôi không thể tìm thấy bất kỳ hạn chế nào như vậy trong tiêu chuẩn C++ 11. –
@ViktorSehr: Tất cả các vùng chứa tiêu chuẩn ngoại trừ 'mảng' * làm * (con trỏ lưu trữ trực tiếp), không phải đối tượng; do đó, họ không cần loại cần hoàn thành cho đến khi cần phân bổ một hoặc nhiều đối tượng. –