Expressioni di modelli e Visual Studio 2005 C ++
-
25-09-2019 - |
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.
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 .