src: use stricter compile-time guidance
SnapshotSerializerDeserializer::GetName()
appears to confuse static analysis such as Coverity.
This changes the function structure to a sequence of if
-else
blocks and marks all branch conditions as constexpr
. (Unfortunately, this results in a dangling else
keyword in the V
macro.)
As a side effect, this change ensures that As per a request in the PR discussion, this change does not ensure that GetName<T>()
can only be called for known types T (instead of returning an empty string).GetName<T>()
can only be called for known types T
and instead still returns an empty string in that case.
Also use std::is_unsigned_v
instead of !std::is_signed_v
.