Dopo anni di codifica in C++, oggi mi è stata posta una semplice domanda, ma in effetti non ho trovato la sua risposta e quindi eccomi qui.Nessuna trasmissione automatica da `int` a` float` con Template Function
Oltre chiedendo perché questo errore sta accadendo, voglio sapere come posso risolvere sotto l'errore modificando solo la funzione di modello (senza cambiare la funzione main()
)
template <class T>
T Add(T first, T second)
{
return first + second;
}
int main()
{
auto sample_1 = Add(1, 2); // Works
auto sample_2 = Add(1.f, 2.f); // Works
auto sample_3 = Add(1.f, 2); // Error: no instance matches the argument types: (double, int)
return 0;
}
introdurre classe 'T2' o fare' secondo' non desumibile con 'decltype (primo) secondo? –
Scenario interessante però. Penso che un interruttore del compilatore di default avrebbe dovuto essere implementato per gestire tali casi ... – sjsam