Здравствуйте, serg_joker, Вы писали:
_>Нет, не получим.см. здесь, например. Добавление std::unrechable() убирает предупреждение и никаким иным образом на выхлоп не влияет.
какой unreachable? До него уже столько кода написано

Кстати это такой же костыль наподобие "мамой клянусь" который вы критиковали. Если мы на него нарвёмся получим тот же UB. И в чём цимес? В том что прокомментировали более явно свои намерения? Ну ок, в принципе тоже аргумент.
_> Ну или приведите пример, где получим, не гипотетически, а на практике, у меня не получилось, может плохо старался.
я считал очевидным вернуть Type::unknown.
switch (flag & 3){
case 0: return Type::_1;
case 1: return Type::_2;
case 2: return Type::_3;
default: return Type::Unknown;
но это ломает оптимизацию и добавляет лишние 3 инструкции (раньше у меня получалось больше на 2, но сейчас видимо звёзды по другому встали)
parse(int):
and edi, 3
xor edx, edx
lea eax, [rdi+1]
cmp edi, 3
cmove eax, edx
ret