なぜテンプレートの特殊化が理にかなっているのだろうか?
次のことは同等ではありませんか?
テンプレートの専門化:
template <typename T>
void f(T t) {
something(t);
}
template <>
void f<int>(int t) {
somethingelse(t);
}
特殊化ではなく非テンプレート関数:
void f(int t) {
somethingelse(t);
}
非テンプレート関数が常に優先されるため、これらは同じであると思います。