Я хотел бы добавить CXXFLAG
в мои системы сборки, которые заставляют всю кодовую базу быть четко определенной.Поэтому любой фрагмент кода, который демонстрирует неопределенное поведение в статическом режиме, должен быть отклонен компилятором.
Например, reinterpret_cast<A*>(someIntPtr)->aMember
без какого-либо контекста времени выполнения undefined (a), тогда как int i = bar(); i /= i;
может привести к неопределенномуповедение (b) в зависимости от оценки времени выполнения bar()
(которая может вернуть ноль).
Я ожидаю, что будут выявляться только случаи (a), но не обязательно случаи (b).