Почему шаблон функции не может быть частично специализирован?

Я знаю, что спецификация языка запрещает частичную специализацию шаблона функции.

Я хотел бы знать, почему это запрещено? Разве они не полезны?

template<typename T, typename U> void f() {}   //allowed!
template<> void f<int, char>()            {}   //allowed!
template<typename T> void f<char, T>()    {}   //not allowed!
template<typename T> void f<T, int>()     {}   //not allowed!
78
задан Lightness Races with Monica 10 April 2013 в 14:18
поделиться