相关疑难解决方法(0)

如何编写适用于32位和64位的std :: bitset模板

请考虑以下代码

template<unsigned int N> void foo(std::bitset<N> bs)
{ /* whatever */ }

int main()
{
    bitset<8> bar;
    foo(bar);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

g ++在64位上抱怨这个,因为<8>被解释为unsigned long int,它与模板不完全匹配.如果我将模板更改为unsigned long int,那么32位编译会抱怨.

显然,解决这个问题的一种方法是将bitset <8>更改为bitset <8ul>,但有没有办法重新编写模板部分,以便它可以使用数字文字的默认解释?

c++ 64-bit templates bitsets

8
推荐指数
1
解决办法
5067
查看次数

标签 统计

64-bit ×1

bitsets ×1

c++ ×1

templates ×1