Ponieważ P0593 Domniemane tworzenie obiektów do manipulacji obiektami na niskim poziomie zostało zaakceptowane, obiekty mogą być teraz tworzone niejawnie w C ++ 20.
W szczególności sformułowanie wprowadzone we wniosku pozwala niektórym operacjom (np. std::malloc) Automatycznie tworzyć i uruchamiać okres istnienia obiektów określonych typów, tak zwanych typów niejawnych , jeśli wprowadzenie takich obiektów spowodowałoby, że program o innym niezdefiniowanym zachowaniu miałby określone zachowanie. Zobacz [przedmiot wstępny] / 10 .
W wersji roboczej stwierdza się teraz, że jeśli istnieje wiele zestawów takich obiektów, które mogłyby zostać utworzone pośrednio w celu nadania programowi określonego zachowania, nie jest określone, który z tych zestawów zostanie utworzony. (Wydaje się, że odpowiednie zdanie nie występuje w ostatniej poprawce wniosku, do której mogłem uzyskać dostęp, R5, ale jest w projekcie zatwierdzenia.)
Czy istnieje program, dla którego można zaobserwować ten wybór niejawnie utworzonego zestawu obiektów? Innymi słowy, czy istnieje program o zdefiniowanym, ale nieokreślonym zachowaniu dzięki tej nowej regule, tak że można na podstawie danych wyjściowych wywnioskować, które zestawy typów niejawnych obiektów (z więcej niż jednego możliwego) zostały utworzone?
A może to zdanie miało jedynie na celu wyjaśnienie wykonania programu na abstrakcyjnej maszynie (bez zauważalnego wpływu)?
std::malloc), W przeciwnym razie występują problemy z definicją rekurencyjnie w zależności od przyszłości.