Вы должны использовать время выполнения утверждение типа:
#include <cassert>
// ...
int x1 = 4;
int x2 = 5;
assert(x1 != x2);
Примечание: Runtime утверждения с использованием assert применяются только при компиляции в режиме отладки, они удаляются при компиляции в режиме release . Из-за этого они не замедляют работу приложения. Они нулевая стоимость , поэтому вы можете (и, возможно, следует ) использовать их свободно для проверки граничных условий и общей правильности.
Важное соображение (props @Bathsheba) заключается в том, что эти утверждения должны не вызывать побочные эффекты , потому что тогда поведение между отладочная версия и выпускная версия будут отличаться.
например.
// in the release version x2 will NOT be incremented!!!
assert(x1 != x2++); // BAD!!