C++ 17 führt "constexpr if" ein, das abhängig von einer Kompilierungszeit instanziiert wird.Ist "constexpr if" besser als switch statement?
Bedeutet es, dass es besser ist, "constexpr if" in Template-Funktionen zu verwenden als switch statement?
Zum Beispiel:
template<int val> void func()
{
if constexpr(val == 0) {} else
if constexpr(val == 1) {} else
...
if constexpr(val == k) {} else {}
}
// vs
template<int val> void func()
{
switch (val)
{
case 0:
break;
case 1:
break;
...
case k:
break;
default:
break;
}
}
Sie müssen definieren, was Sie mit "besser" meinen. Effizienter? Das hängt von der Compilerimplementierung ab. Einfacher zu lesen? Ich bevorzuge die switch-Anweisung, aber das ist meine subjektive Meinung. – Ferruccio
Switch ist einfacher zu lesen, wenn jeder Fall eine einfache Ganzzahl oder Aufzählung ist, und Sie erhalten doppelte Überprüfung kostenlos. –