2013-06-11 46 views
8

Có thể tạo mảng static const với các giá trị từ gói tham số mẫu không? Tôi đã thử các mã sau đây, nhưng gcc 4.8.1 cho "lỗi: tham số boå không mở rộng"C++ 11 tạo mảng tĩnh từ gói tham số

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

Nếu giải pháp thực sự đúng, bạn nên đánh dấu nó (dấu kiểm bên cạnh câu trả lời của mình). Đồng thời, cân nhắc đánh dấu các câu trả lời cho một số câu trả lời khác của bạn đúng nếu có câu trả lời đúng. – SirGuy

Trả lời

14

Hãy thử với:

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

Các tham số gói trong ARRAY_OF_DIMS<N> là một trong đó là không được mở rộng. Mỗi gói tham số không phải là đối số cho sizeof... phải được mở rộng.

+0

Cảm ơn, đã hoạt động! – user2052436

Các vấn đề liên quan