Le switch case est à priori préférable car beaucoup plus lisible. Cependant il n'est pas extensible: s'il faut en faire une version à 5, une autre à 12, il faudra alors écrire manual_switch_5, manual_switch_12, etc., tandis que la version template fonctionne de base.
Malgré cela je suis d'accord pour dire que dans le cadre d'un exemple aussi simple, écrire les différents manual_switch est sans doute encore préférable à la version template. Mais il s'agit d'un exemple simple, le code réel peut être beaucoup plus complexe, et il peut être intéressant de savoir écrire la version template.
Et il est aussi intéressant de savoir que les compilateurs optimisent aussi bien les deux versions, le switch case étant un cas connu d'optimisation très agressive.
[^] # Re: Lisibilité
Posté par Alek_Lyon . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 3.
Le switch case est à priori préférable car beaucoup plus lisible. Cependant il n'est pas extensible: s'il faut en faire une version à 5, une autre à 12, il faudra alors écrire manual_switch_5, manual_switch_12, etc., tandis que la version template fonctionne de base.
Malgré cela je suis d'accord pour dire que dans le cadre d'un exemple aussi simple, écrire les différents manual_switch est sans doute encore préférable à la version template. Mais il s'agit d'un exemple simple, le code réel peut être beaucoup plus complexe, et il peut être intéressant de savoir écrire la version template.
Et il est aussi intéressant de savoir que les compilateurs optimisent aussi bien les deux versions, le switch case étant un cas connu d'optimisation très agressive.