Утверждение используется для проверки выполнения условия (предусловие, постусловие, инварианты) и помощи программистам в поиске дыр на этапе отладки.
Например,
void f(int *p)
{
assert(p);
p->do();
}
Мой вопрос: нужны ли нам предположить, что условие не может быть выполнено в режиме выпуска, и обработать случай соответствующим образом?
void f(int *p)
{
assert(p);
if (p)
{
p->do();
}
}
В конце концов, утверждение означает, что условие, которое оно проверяет, НИКОГДА не должно быть ложным. Но если, если мы его не проверим, и он выйдет из строя, программа выйдет из строя. Похоже на дилемму. Как вы, ребята, справляетесь с этим?