| ▲ | ajuc 4 days ago |
| So the compiler could have debug mode where it checks the invariants and release mode where it assumes they are true and optimizes around that without checking? |
|
| ▲ | esrauch 4 days ago | parent [-] |
| Yes, and that same pattern already does exist in C and C++. Asserts that are checked in debug builds but presumed true for optimization in release builds. |
| |
| ▲ | mananaysiempre 4 days ago | parent [-] | | Not unless you write your own assert macro using C23 unreachable(), GNU C __builtin_unreachable(), MSVC __assume(0), or the like. The standard one is defined[1] to either explicitly check or completely ignore its argument. [1] https://port70.net/~nsz/c/c11/n1570.html#7.2 | | |
| ▲ | esrauch 4 days ago | parent [-] | | Yeah, I meant it's common for projects to make their own 'assume' macros. In Rust you can wrap core::hint::assert_unchecked similarly. |
|
|