I’m not sure about this. An assertion is something that has to be true to be a well formed program. If an assertion fails, you’ve broken the contract of the method and all bets are off.
Lots of people define assertions to be hard crashes so they can be caught in logs rather then causing things like heap corruptions which can be very difficult to track down later.
There’s actually lots of discussion in the standard at the moment about whether you should be able to continue past a C++20
[[ assert: x < 20 ]]. The main argument for this that it could be useful for testing but is still generally considered a blocking bug.
What actually causes the crash here?