C++20引入了许多新函数,如
我编译了这两个选项--可以在编译器资源管理器代码中看到:
除了std的模板中使用的类型检查之外,生成的程序集代码看起来是相同的。
就操作系统不可知论的代码和具有相同的优化而言--假设使用
谢了。
没有。C++标准只指定了
允许实现者做任何他们想要实现这种行为的事情,包括使用
int set_bits = 0;
while(x)
{
if (x & 1)
++set_bits;
x >>= 1;
}
return set_bits;
这是标准[bit.count]中的全部措辞:
template<class T>
constexpr int popcount(T x) noexcept;
约束:
返回:
实事求是地说?编译器编写者非常聪明,会对此进行优化,以尽可能多地使用intrinsic。例如,GCC的实现似乎得到了相当大的优化。