Dlaczego przeciążenie funkcji szablonu i funkcji bez szablonu „tą samą sygnaturą” wywołuje funkcję nie-szablonową?

Mam ten kod:

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

void f(const int &) {}

int main() {
   f(0);
}

Dlaczego wywołuje drugi zamiast pierwszego? Uważałbym je za takie same, ale najwyraźniej nie są tak, ponieważ nie otrzymuję błędu redefinicji.

questionAnswers(2)

yourAnswerToTheQuestion