¿Por qué la sobrecarga de la función de la plantilla y la no-plantilla con la "misma firma" llama a la función de la no-plantilla?
Tengo este codigo
template<
class T = const int &
> void f(T) {}
void f(const int &) {}
int main() {
f(0);
}
¿Por qué llama la segunda en lugar de la primera? Pensaría en ellos como si fueran iguales, pero claramente no, ya que no recibo un error de redefinición.