Поскольку P0593 неявное создание объектов для низкоуровневой манипуляции с объектами было принято, объекты теперь можно создавать неявно в C ++ 20.
В частности, формулировка, предложенная предложением, позволяет определенным операциям (таким как std::malloc
) автоматически создавать и запускать время жизни объектов определенных типов, так называемые типы неявного времени жизни , если введение таких объектов приведет к тому, что программа с иным неопределенным поведением будет иметь определенное поведение. Смотрите [intro.object] / 10 .
Теперь в проекте также указывается, что, если существует несколько наборов таких объектов, которые можно было бы создать неявно, чтобы придать программе определенное поведение, неизвестно, какой из этих наборов создан. (Соответствующее предложение, по-видимому, отсутствует в последней редакции предложения, к которой я мог получить доступ, R5, но содержится в проекте коммита.)
Есть ли на самом деле программа, для которой этот выбор неявно созданного набора объектов является наблюдаемым? Другими словами, существует ли программа с определенным, но неуказанным поведением с помощью этого нового правила, так что можно из вывода вывести, какие наборы типов неявных объектов (из нескольких возможных) были созданы?
Или это предложение просто предназначено для разъяснения выполнения программы на абстрактной машине (без заметного влияния)?
std::malloc
), иначе вы получите проблемы с определением быть рекурсивным в зависимости от будущего.