Здравствуйте, Bell, Вы писали:
<skip/>
Для функции как раз шаблонные аргументы по умолчанию не нужны.
Можно просто перегрузить:
template<typename T>
void f(T);
template<typename U, typename V>
void f(U, V);
А вот классы, к сожалению, нельзя.
Вот там как раз и нужны значения по умолчанию из-за отсутствия "перегрузок" класса.