Оскільки P0593 було прийнято неявне створення об'єктів для маніпулювання об'єктами низького рівня , об'єкти тепер можуть створюватися неявно в C ++ 20.
Зокрема, формулювання, введене пропозицією, дозволяє певним операціям (таким як std::malloc
) автоматично створювати та запускати тривалість життя об'єктів певних типів, так званих неявних типів життя , якщо введення таких об'єктів спричиняє наявність програми з інакше невизначеною поведінкою визначена поведінка. Див. [Вступ.об’єкт] / 10 .
Тепер у проекті йдеться про те, що якщо є кілька наборів таких об'єктів, які можна було б створити неявно, щоб надати програмі певну поведінку, не визначено, який із цих наборів створюється. (Відповідне речення, здається, не присутнє в останній редакції пропозицій, до якої я міг отримати доступ, R5, але є в проекті комітету.)
Чи є насправді програма, для якої такий вибір неявно створеного набору об’єктів спостерігається? Іншими словами, чи існує програма з визначеною, але не визначеною поведінкою за допомогою цього нового правила, таким чином, що з висновку можна зробити висновки, які набори типів неявних об'єктів (з більш ніж одного можливого) були створені?
Або це речення було просто призначене для уточнення виконання програми на абстрактній машині (без помітного впливу)?
std::malloc
), інакше у вас виникають проблеми з визначенням рекурсивно залежно від майбутнього.