Peccato che hai scelto proprio la funzione sbagliata.
max è una funzione standard contenuta in <algorithm>.
http://www.cplusplus.com/reference/algorithm/max.html
Pertanto la cosa più ovvia è segnalare questa ambiguità tra il template scritto da te e quello standard ( che prevede parametri const tra l'altro) e non quello di far finta di niente.
Meglio provare con:
o cambiare il nome della funzione template per verificare se da ancora errore o no. (Questo è un tipico caso nel quale non specificare il namespace da grattacapi).codice:cout << std::max<float>(2.6,1.0) << endl;
@XWolverineX
Non è un errore. Non nello standard C99 che il gcc implementa. L'errore semmai è che permetta di fare questo compilando codice C++ e non C.codice:int n; float array[n];