Код: Выделить всё
3.50[defns.undefined.runtime]runtime-undefined behavior
behavior that is undefined except when it occurs during constant evaluation
[Note 1: During constant evaluation,
it is implementation-defined whether runtime-undefined behavior results in the expression being deemed non-constant (as specified in [expr.const]) and
runtime-undefined behavior has no other effect.
— end note]
Код: Выделить всё
runtime-undefined behavior has no other effect.
Я понимаю, что это утверждение в целом означает, по сути, следующее:
неопределенное поведение во время выполнения не является неопределенным во время постоянной оценки. вы можете либо сказать, что он непостоянный и не выполнить компиляцию И, несмотря ни на что, это не должно иметь никакого другого эффекта
Мне неясно, что означает отсутствие другого эффекта.
Одна из возможных интерпретаций заключается в том, что если вы все равно решите вычислить его и считать выражение константой, оно не должно повлиять на остальную часть программы за пределами этого выражения.
Подробнее здесь: https://stackoverflow.com/questions/793 ... c-standard
Мобильная версия