リリースビルドでのQ_ASSERTのセマンティクスに関する明確なステートメントが見つかりません。アサーションチェックがない場合、アサーションされた式はまったく評価されますか?
次のコードを検討してください
Q_ASSERT(do_something_report_false_if_failed());
do_something_report_false_if_failed()
すべての潜在的なQtビルド構成で実行されますか?代わりにこれを行う方が安全でしょうか(少し冗長で読みにくくなりますが)。
bool is_ok = do_something_report_false_if_failed();
Q_ASSERT(is_ok)
後者のアプローチには、ASSERTの失敗がそれほど冗長ではないという欠点がありますが、おそらくステートメントが実行されていることをより明確に示していますか?