Я бы хотел рефакторинг следующего кода:
enum Mode { None, Value1, Value2 }
template <Mode mode>
bool func() {
if (mode == None) {
helperNone();
return funcImplNone();
} else if (mode == Value1) {
helper1();
return funcImplValue1();
} else if (mode == Value2) {
helper2();
return funcImplValue2();
}
return true;
}
, потому что выражение
mode == None
вычисляется во время компиляции.И также не может ли этот код привести к раздуванию кода (дублирование кода в исполняемом файле)?
Я думаю о следующем рефакторинге:
template<Mode>
bool func() {
return true;
}
template<>
bool func<None>() {
return true;
}
template<>
bool func<Value1>() {
helper1();
return funcImplValue2();
}
template<>
bool func<Value2>() {
helper2();
return funcImplValue2();
}
Существуют ли другие стандарты?способ рефакторинга что?Есть ли у нас гарантии, что компилятор оптимизирует сам этот код?Не выглядит ли измененный код более четким?