Я пытаюсь научиться реализовывать template
в C ++. Когда я меняю свой код NTT (числовая теория c transform) на код, использующий template
, который выглядит следующим образом:
template <long long mod> struct NTT{
int x = 0;
NTT(){
long long p = mod-1;
while(!(p % 2)){
p >>= 1;
++x;
}
}
const static long long root_pw = 1 << x;
//(there is a function after this that also needs to read the value 'root_pw')
};
signed main()
{
NTT<998244353> ntt1;
vector<long long> a(ntt1::root_pw,0);
}
Он говорит мне сделать x static
.
Когда я это делаю, он говорит мне сделать x const
, что превосходит причину присутствия x там.
Я использую (GNU C ++ 11) и Мой компилятор (Dev-C ++ 5.11) настроен на настройку (TDM-G CC 4.9.2 64-разрядная версия), если это помогает.
Я действительно хочу, чтобы это работало, но я не знаете, как.
Это, наверное, глупо легко, но только то, что мне не хватает?
Заранее спасибо.