scrivendo una funzione template, ho dichiarato:g ++ "non è un tipo di" errore
template <typename T>
T invertible(T const& container, T::size_type startIndex, T::size_type endIndex);
compilazione con g ++ 4.0.1 ho ottenuto l'errore:
error: 'T::size_type' is not a type
Ora ho letto quel passaggio, grazie (quelli che leggono a casa possono vedere la spiegazione dettagliata a pagina 130). Non vedo ancora perché "typename" sia richiesto in una dichiarazione di argomento, in quanto deve essere un tipo, ma forse è solo per coerenza con le affermazioni in generale. –
@wnissen: in genere tali requisiti esistono per mantenere i parser builder felici. Parte del problema è che a quanto pare già sai che è una dichiarazione di argomento. A causa del problema "parsing più fastidioso", il parser in genere deve dedurre quello dai token tra(). Ora, se dici che l'interpretazione dei token tra() dovrebbe dipendere dal sapere che è una dichiarazione di argomento, allora hai introdotto un problema di analisi ciclica. – MSalters