Karena P0593 penciptaan objek secara implisit untuk manipulasi objek tingkat rendah telah diterima, objek sekarang dapat dibuat secara implisit dalam C ++ 20.
Khususnya kata-kata yang diperkenalkan oleh proposal memungkinkan operasi tertentu (seperti std::malloc
) untuk secara otomatis membuat dan memulai masa objek dari tipe tertentu, yang disebut tipe implisit-seumur hidup , jika pengenalan objek tersebut akan menyebabkan program dengan perilaku yang tidak ditentukan untuk memiliki perilaku yang didefinisikan. Lihat [intro.object] / 10 .
Draf sekarang lebih lanjut menyatakan bahwa jika ada beberapa set objek seperti itu yang dapat dibuat secara implisit untuk memberikan perilaku yang ditentukan program, itu tidak ditentukan yang mana dari set ini dibuat. (Kalimat yang relevan tampaknya tidak hadir dalam revisi proposal terakhir yang dapat saya akses, R5, tetapi dalam konsep komit.)
Apakah benar-benar ada program yang dapat diamati pilihan set objek yang dibuat secara implisit ini? Dengan kata lain, apakah ada program dengan perilaku yang ditentukan, tetapi tidak ditentukan, melalui aturan baru ini, sehingga dimungkinkan untuk menyimpulkan dari output yang menetapkan jenis objek implisit (dari lebih dari satu yang mungkin) dibuat?
Atau apakah kalimat ini hanya dimaksudkan untuk memperjelas pelaksanaan program pada mesin abstrak (tanpa dampak yang dapat diamati)?
std::malloc
), jika tidak, Anda mendapatkan masalah dengan definisi secara rekursif tergantung pada masa depan.