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.