2013-06-11 42 views
8

是否可以使用模板參數包中的值創建一個static const數組? 我嘗試下面的代碼,但GCC 4.8.1提供了「錯誤:參數包不擴大」C++ 11從參數包創建靜態數組

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

如果解決方案確實正確,您應該將其標記爲(答案旁邊的複選標記)。如果有正確的答案,也可以考慮標記你的其他答案的答案。 – SirGuy

回答

14

與嘗試:

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

ARRAY_OF_DIMS<N>參數包是一個是沒有擴大。必須擴展每個參數包(不是參數sizeof...)。

+0

謝謝,這工作! – user2052436