Любая причина использовать утверждение времени выполнения вместо утверждения времени компиляции?

Просматривая кодовую базу Visual C ++, я обнаружил следующую странную вещь. Утверждение времени выполнения (котороепроверить условие и выдать исключение, если условие нарушено) использовался в случае, когда условие могло быть оценено во время компиляции:

assert( sizeof( SomeType ) == sizeof( SomeOtherType ) );

ясно, что компилятор оценит условие и заменит код, который будет эффективно

assert( true );

который ничего не делает или

assert( false );

который выдает исключение каждый раз, когда управление проходит через эту строку.

IMO Утверждение времени компиляции следует использовать вместо этого по следующим причинам:

это выявляет нарушение условия раньше - во время компиляции - иэто позволило бы очистить (таким образом, быстрее и меньше) машинный код

Похоже, что утверждение времени компиляции - единственно правильная вещь. Есть ли какая-либо возможная причина, чтобы предпочесть здесь утверждение во время выполнения?

Ответы на вопрос(2)

Ваш ответ на вопрос