char je default signed, takže to vrátí 1. Tady se trošku ukazuje, jak se switch stává nekoncepční v C++. Pominuli nutnost breaků, používat switch v šablonách se opravdu nedoporučuje. Klidně i kdyby to znamenalo, že optimalizace tabulkou skoků by fungovala jen u ordinálních typů a jinak by se to přepisovalo do série ifů.
správně by podle mého názoru mělo být tak, že switch ctí typ selektoru a konvertuje konstanty do stejného typu jako selektor. Bohužel to funguje po staru cečkovsky |