Неопределенное поведение во время выполнения в стандарте C++C++

Программы на C++. Форум разработчиков
Anonymous
Неопределенное поведение во время выполнения в стандарте C++

Сообщение Anonymous »

В разделе 3.50 последней версии стандарта C++ есть такое определение:

Код: Выделить всё

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

Вернуться в «C++»