3.50[defns.undefined.runtime]runtime-undefined поведение
Поведение, которое не определено, за исключением случаев, когда оно возникает во время постоянной оценки
[Примечание 1: Во время постоянной оценки
определяется реализацией, приводит ли поведение, неопределенное во время выполнения, к выражению считается непостоянным (как указано в [expr.const]), и
неопределенное поведение во время выполнения не имеет другого эффекта.
— последнее примечание]
По поводу претензии:
Код: Выделить всё
runtime-undefined behavior has no other effect.
Я понимаю, что это утверждение в целом означает, по сути, следующее:
неопределенное поведение во время выполнения не является неопределенным во время постоянной оценки. вы можете либо сказать, что он непостоянный и не выполнить компиляцию И, несмотря ни на что, это не должно иметь никакого другого эффекта
Мне неясно, что означает отсутствие другого эффекта.
Одна из возможных интерпретаций заключается в том, что если вы все равно решите вычислить его и считать выражение константой, оно не должно повлиять на остальную часть программы за пределами этого выражения.
Подробнее здесь: https://stackoverflow.com/questions/793 ... c-standard
Мобильная версия