Поведение зависит от реализации (или даже её версии), но UB не вызовет
это значит что данное поведение не описано спецификацией и может при определённых условиях выстрелить в ногу, но не является неопределённым
Отличие в том что поведение консистентно, компилятор не может рассчитывать что такого происходить не будет ни при каких условиях, но при этом документация не дает никаких гарантий что именно произойдет в данном случае.
Это значит "неизвестное, но в определенных рамках"
Сейф код гарантирует только отсутствие именно UB - вещей о которых компилятор рассчитывает что они не произойдут ни при каких условиях.
Обсуждают сегодня