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

У меня есть этот код:

template<
    class T = const int &
> void f(T) {}

void f(const int &) {}

int main() {
   f(0);
}

Почему он называет второй вместо первого? Я думаю о них как об одном и том же, но они явно не так, как я не получаю ошибку переопределения.

Ответы на вопрос(2)

Ваш ответ на вопрос