Почему перегрузка шаблонной и не шаблонной функции с «той же сигнатурой» вызывает функцию не шаблонную?
У меня есть этот код:
template<
class T = const int &
> void f(T) {}
void f(const int &) {}
int main() {
f(0);
}
Почему он называет второй вместо первого? Я думаю о них как об одном и том же, но они явно не так, как я не получаю ошибку переопределения.