Deduzione dei Tipi nei Template
Scrivere esplicitamente i tipi usando le parentesi angolari (<int>, <double>) ogni volta che chiamiamo una funzione template diventa subito estenuante. Fortunatamente, il C++ dispone di un potente meccanismo chiamato Template Type Deduction (Deduzione del tipo di template).
In linea generale, non hai bisogno di fornire i parametri di template alle funzioni. Il compilatore li capirà ispezionando il tipo degli argomenti che gli passi.
Genericizzare una funzione
Section titled “Genericizzare una funzione”Prendiamo l’esempio di una funzione che calcola la media (mean) di un array. Se fosse hard-coded per i double, limiterebbe di molto la nostra espressione. Trasformiamola in un template generico e usiamo la Type Deduction.
Il compilatore ha fatto per noi il lavoro sporco. Se avessimo voluto supportare tutti e tre i tipi manualmente usando gli Overload standard di funzione, avremmo dovuto copia-incollare l’implementazione tre volte modificandone solamente i tipi in input. Con i Template il codice scala all’infinito senza sforzo.
Quando la Deduzione Fallisce
Section titled “Quando la Deduzione Fallisce”Vi sono casi in cui il compilatore getta la spugna. Se ad esempio un parametro di template appare solo nel tipo di ritorno, come fa il compilatore a dedurlo dagli argomenti in input? In quei rari casi, devi forzare l’istanziazione passandogli il tipo nelle parentesi < >.