template<typename T, typename C = vector<T>>
class stack{
...
friend class stack_array;
};
template<typename T, typename C = vector<T>, typename K = stack<T,C>>
class stack_array{
...
static const size_t max_elem;
array<K, max_elem> store;
...
};
template<typename T, typename C = vector<T>, typename K = stack<T,C>>
const size_t stack_array<T,C,K>::max_elem = 10;
Я получаю следующую ошибку компиляции для вышеупомянутого:
error: the value of ‘stack_array<T, C, K>::max_elem’ is not usable in a constant expression
array<K, max_elem> store;
^
note: ‘stack_array<T, C, K>::max_elem’ was not initialized with a constant expression
static const size_t max_elem;
Я предполагаю, что эта ошибка возникает, поскольку статическая переменная const max_elem
инициализируется после определения класса шаблона. Это понимание правильно?
Есть ли способ устранить эту ошибку, не обязательно изменяя текущее использование max_elem
?