2013-06-11 4 views
8

È possibile creare un array static const con valori dal pacchetto di parametri del modello? Ho provato il seguente codice, ma gcc 4.8.1 dà "l'errore: parametro non pacchi espansa"C++ 11 creazione di array statici da un gruppo di parametri

template<int... N> 
struct ARRAY_OF_DIMS 
{ 
    static constexpr size_t NDIM = sizeof...(N); 
    static const int DIMS[NDIM]; 
}; 

template<int... N> 
const int ARRAY_OF_DIMS<N>::DIMS[ARRAY_OF_DIMS<N>::NDIM] = { N... }; 
+2

Se la soluzione è effettivamente corretta, è necessario contrassegnarla (il segno di spunta accanto alla sua risposta). Considerare anche di contrassegnare le risposte ad alcune delle altre risposte corrette se ci sono risposte corrette. – SirGuy

risposta

14

Prova con:

template<int... N> 
const int ARRAY_OF_DIMS<N...>::DIMS[ARRAY_OF_DIMS<N...>::NDIM] = { N... }; 

Il parametro confezione nel ARRAY_OF_DIMS<N> è quello che è non essere espanso. Ogni parametro parametro che non è un argomento per sizeof... deve essere espanso.

+0

Grazie, ha funzionato! – user2052436