我正在尝试学习template
用 C++ 实现。当我将我的 NTT(数论变换)代码更改为使用的代码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-GCC 4.9.2 64 位版本)。
我真的很想完成这项工作,但我不知道该怎么做。
这可能是愚蠢的容易,但正是我错过了什么?
先感谢您。