Warum wird bei einer Überladung von Vorlagen und Nicht-Vorlagen mit der gleichen Signatur die Nicht-Vorlagenfunktion aufgerufen?
Ich habe diesen Code:
template<
class T = const int &
> void f(T) {}
void f(const int &) {}
int main() {
f(0);
}
Warum ruft es den zweiten anstelle des ersten auf? Ich würde sie als gleich ansehen, aber sie sind eindeutig nicht so, da ich keinen Fehler bei der Neudefinition erhalte.