Optimización, afirma y modo de liberación

Considera una función

void f() {
   assert(condition);

   ...
}

En modo de depuración, donde las afirmaciones están habilitadas, el compilador es libre de asumircondition se mantiene, ya que el código restante no se ejecutará si no lo hace.

Sin embargo, en el modo de lanzamiento, creo que el compilador solo verá

void f() {
   ...
}

y ya no puedo asumircondition.

¿Hay alguna directiva del compilador o trucos de aserción estática para que el compilador sepa sobre ciertas invariantes?

Respuestas a la pregunta(2)

Su respuesta a la pregunta