gpt4 book ai didi

c++ - 在 constexpr 函数中使用 MSVC 的 __popcnt

转载 作者:行者123 更新时间:2023-12-04 12:28:01 24 4
gpt4 key购买 nike

背景:我试图在 MSVC 项目中重新利用为 GCC 编写的一些 C++ 代码。我一直在尝试重构代码以使其与 MSVC 编译器兼容。
简化,最初的功能之一是这样的:

[[nodiscard]] constexpr int count() const noexcept {
return __builtin_popcountll(mask);//gcc-specific function
}
其中 mask 是 64 位成员变量。到 MSVC 的明显转换是:
[[nodiscard]] constexpr int count() const noexcept {
return __popcnt64(mask); // MSVC replacement
}
但是,它不会编译,因为 __popcnt64constexpr 中不允许功能。
我使用的是 C++17,如果可能的话,我宁愿避免切换到 C++20。
有没有办法让它工作?

最佳答案

您不能制作非 constexpr函数变成constexpr一。如果他们的标准库没有声明它 constexpr ,然后就是这样。您将不得不自己编写,这在 C++17 中会很困难。

关于c++ - 在 constexpr 函数中使用 MSVC 的 __popcnt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69040364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com