sto leggendo ++ Modelli C Guida completa e sono imbattuto in questo non-tipo di codice parametri di modello di funzione (ho aggiunto il main() e le altre parti, tranne la definizione della funzione e call):non-tipo di modello parametri di funzione
#include <vector>
#include <algorithm>
#include <iostream>
template <typename T, int value>
T add (T const & element){
return element + value;
}
int main() {
int a[] = {1,2,3,4};
int length = sizeof (a)/sizeof (*a);
int b[length];
std::transform (a, a + length, b, (int(*)(int const &))add <int, 5>); //why?
std::for_each (b, b + length, [](int const & value){ std::cout << value << '\n'; });
return 0;
}
Non ho capito dopo aver letto dal libro perché abbiamo bisogno di digitare la chiamata di funzione?
EDIT: Explaination dal libro:
aggiuntivo è un modello di funzione, ed i modelli di funzione sono considerati solo per citarne un insieme di funzioni sovraccaricate (anche se l'insieme ha un solo membro). Tuttavia, secondo lo standard corrente, non è possibile utilizzare serie di funzioni sovraccaricate per la deduzione dei parametri del template. Quindi, si deve lanciare per il tipo esatto dell'argomento funzione di modello: ...
Compiler: g ++ 4.5.1 su Ubuntu 10.10