В gcc-4.9 changes он говорит:НКУ-4,9 Неопределенное поведение дезинфицирующее
UndefinedBehaviorSanitizer (ubsan), быстрый Неопределенное поведение детектора, была добавлена и может быть включен с помощью -fsanitize = не определено. Различные вычисления будут использоваться для обнаружения неопределенного поведения во время выполнения. UndefinedBehaviorSanitizer в настоящее время доступен для языков C и C++.
Я рассмотрел этот вопрос (A C++ implementation that detects undefined behavior?), но он выглядит довольно устаревшим.
Эта ссылка (http://gcc.gnu.org/ml/gcc-patches/2013-06/msg00264.html) содержит информацию об этом, но ей несколько месяцев.
Это попытка добавить неопределенный дезактиватор поведения в GCC. Обратите внимание, что это очень альфа-версия; до сих пор это не так много, в момент, когда он должен обрабатывать деление на нулевые случаи, INT_MIN/-1 и различные сдвижные шкафы (смещение на отрицательное значение, смещение при второй операнд> = чем TYPE_PRECISION (first_operand) и тому подобное. (на целых типов, до сих пор.)
из того, что я прочитал это время портирована на gcc
из LLVM
.
Я пробовал с (5/0)
и той лишь разницей, похоже, этот выход:
main.cpp:5:19: runtime error: division by zero
У кого-нибудь есть дополнительная информация об этом или его характеристиках?
Похоже, много наземной работы для этой работы должны были бы быть сделано для того, чтобы поддержать [обнаруживать неопределенное поведение в постоянной выражения] (http://stackoverflow.com/questions/21319413/why-do-constant-expressions-have-an-exclusion-for-undefined-behavior). –