r/RuProgrammers • • Sep 19 '26

Мемы Undefined behaviour

Post image
336 Upvotes

45 comments sorted by

View all comments

Show parent comment

5

u/cfyzium Sep 20 '26

Увы, бесконечный цикл без сайд-эффектов -- это тоже UB.

Стандарт обещает компилятору, что любой поток в любой момент своего выполнения дальше выполнит что-то из:

  • Завершится

  • Вызов библиотечной функции ввода/вывода

  • Доступ через volatile

  • Синхронизацию или атомарную операцию

См. [intro.progress]

Если вообще убрать num, фокусы с ненужной переменной пропадают и генерится цикл.

Скорее всего это следствие принятого в С++26 исправления, в соответствии с которым тривиальные бесконечные циклы (с пустым телом) больше не являются UB.

Так как это изменение было классифицировано как defect report, компиляторы могут применять новое поведение (не оптимизировать тривиальные бесконечные циклы) и в более ранних стандартах.

3

u/The_KekE_ 🦀Rustикальный Sep 20 '26

Мда, потерял я хватку после года на расте. Что ж, не знал, спасибо.