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:
codice:
cout << std::max<float>(2.6,1.0) << endl;
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).

@XWolverineX
codice:
int n;
float array[n];
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.