Those are the default cases which are not expected to hit (nor reachable) normally.
When the code is compiled with release mode and it reaches Q_UNREACHABLE(), it becomes undefined behavior. So it rely on the developers to catch the errors in debug mode. The upside of this is that the switch statement will be more optimized than not using it. This also means the statements after Q_UNREACHABLE() isn't important. It allow anything to preserve the intention of the code.
This marco is preferred over C++23 std::unreachable because it will automatically insert a Q_ASSERT(false) with it.
Those are the
default
cases which are not expected to hit (nor reachable) normally.When the code is compiled with release mode and it reaches
Q_UNREACHABLE()
, it becomes undefined behavior. So it rely on the developers to catch the errors in debug mode. The upside of this is that theswitch
statement will be more optimized than not using it. This also means the statements afterQ_UNREACHABLE()
isn't important. It allow anything to preserve the intention of the code.This marco is preferred over C++23
std::unreachable
because it will automatically insert aQ_ASSERT(false)
with it.