Por que a sobrecarga de modelo e função não modelo com a "mesma assinatura" chama a função não-modelo?
Eu tenho este código:
template<
class T = const int &
> void f(T) {}
void f(const int &) {}
int main() {
f(0);
}
Por que ele chama o segundo em vez de primeiro? Eu pensaria neles como sendo o mesmo, mas eles claramente não são como eu não recebo um erro de redefinição.