If your assert compiles down to `if (condition) {}` in production then the compiler will optimize away the condition while keeping any side effects.
If your assert compiles down to `if (condition) {}` in production then the compiler will optimize away the condition while keeping any side effects.
Yeah which may not be what you want. E.g. `assert(expensive_to_compute() == 0)`.
The correct way to solve this is with debug asserts (as in Rust, or how the parent described).
Genuine question, does Rust know if `expensive_to_compute()` has side effects? There are no params, so could it be compiled out if the return value is ignored? Ex: `expensive_to_compute()` What about: `(void) expensive_to_compute()`?