Do P0593 Việc tạo các đối tượng ngầm cho thao tác đối tượng mức thấp đã được chấp nhận, giờ đây các đối tượng có thể được tạo hoàn toàn trong C ++ 20.
Cụ thể, từ ngữ được đề xuất cho phép cho phép các hoạt động nhất định (như std::malloc
) tự động tạo và bắt đầu thời gian tồn tại của các đối tượng thuộc một số loại nhất định, được gọi là các kiểu sống trọn đời , nếu giới thiệu các đối tượng đó sẽ khiến chương trình có hành vi không xác định khác có hành vi xác định. Xem [intro.object] / 10 .
Dự thảo bây giờ tuyên bố thêm rằng nếu có nhiều bộ đối tượng như vậy có thể được tạo ra hoàn toàn để đưa ra hành vi được xác định của chương trình, thì không xác định được bộ nào trong số các bộ này được tạo. (Câu liên quan dường như không có trong bản sửa đổi đề xuất cuối cùng mà tôi có thể truy cập, R5, nhưng nằm trong dự thảo cam kết.)
Có thực sự có một chương trình mà sự lựa chọn này của bộ đối tượng được tạo ngầm có thể quan sát được không? Nói cách khác, có một chương trình với hành vi được xác định, nhưng không xác định, thông qua quy tắc mới này, sao cho có thể suy ra từ đầu ra tập hợp các loại đối tượng ẩn (trong số nhiều hơn một đối tượng có thể) được tạo ra?
Hay câu này chỉ đơn thuần là để làm rõ việc thực hiện chương trình trên máy trừu tượng (không có tác động quan sát được)?
std::malloc
), nếu không, bạn gặp vấn đề với định nghĩa được đệ quy tùy thuộc vào tương lai.