Domanda

Mi piacerebbe costruire la libreria OLB3D con il mio compilatore Visual Studio 2005, ma questo non è riuscito a errori di modello.

Per essere più specifici, la seguente espressione sembra essere un problema:

void function(T u[Lattice<T>::d])

Sul sito Web del progetto si afferma che il mio compilatore non è in grado di espressioni di modelli così complicati: si dovrebbe usare il GCC 3.4.1.

La mia domanda è ora se c'è un modo per aggiornare il mio compilatore VS C ++ in modo che possa gestire le espressioni modello al livello come GCC 3.4.1? Forse aiuta se ricevo una versione più recente di Visual Studio?

Saluti C.

È stato utile?

Soluzione

Il compilatore dice che non si può dedurre il tipo di modello. Si può sempre aiutare fuori specificando il tipo di per sé nel codice.

foo<int>(some_int_array);

Tuttavia, la parte tra [] che è inciampare in su è del tutto priva di significato. Array decadono in puntatori e il valore viene ignorato, in primo luogo. Si può solo commentare che una parte se questo è un esempio reale.

Se si prende la matrice per il riferimento, VC ++ 2005 non sembra avere alcun problema con esso sia:

template <class T>
void function(T (&arr)[Lattice<T>::n]);

(E 'possibile che il caso che non lo fa di compilazione è così insignificante che nessuno ha mai preso la briga di verificare se cose del genere di lavoro?)

Altri suggerimenti

Acquistare una nuova versione di Visual Studio. Il 2005 è piuttosto vecchio e non molto conforme. È sempre possibile testare la nuova prima scaricando Visual C ++ espresso .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top