std::p opcount 标识符在 MSVC 16.6.0 中找不到
std::popcount identifier not found in MSVC 16.6.0
我做错了什么,还是Microsoft对std::popcount
的支持在Visual Studio的16.6.0版本中被破坏了?
我正在使用Microsoft Visual Studio 16.6.0,C++语言标准设置为预览 - 最新C++工作草案(std:c++latest(中的功能,并尝试从cpp首选项编译popcount示例代码:
#include <bit>
#include <bitset>
#include <cstdint>
#include <initializer_list>
#include <iostream>
int main()
{
for (std::uint8_t i : { 0, 0b11111111, 0b00011101 }) {
std::cout << "popcount(0b" << std::bitset<8>(i) << ") = "
<< std::popcount(i) << 'n';
}
}
尽管 cppreference 声明自版本 16.5 以来一直支持位操作 (P0553R4(,并且 MSVC 16.6 定义了功能宏__cpp_lib_bitops
,但上面的代码给出了以下错误:
Error C3861 'popcount': identifier not found ConsoleApplication3 C:UsersrsjafsourcereposConsoleApplication3ConsoleApplication3ConsoleApplication3.cpp 22
Message see declaration of 'std' ConsoleApplication3 C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.26.28801includeiostream 19
Error (active) E0135 namespace "std" has no member "popcount" ConsoleApplication3 C:UsersrsjafsourcereposConsoleApplication3ConsoleApplication3ConsoleApplication3.cpp 22
Error C2039 'popcount': is not a member of 'std' ConsoleApplication3 C:UsersrsjafsourcereposConsoleApplication3ConsoleApplication3ConsoleApplication3.cpp 22
当我查看bit
标题时,我确实看到了一个popcount
模板,但它似乎被我的应用程序禁用了。
使用当前的 MSVCstd::popcount
可在/std:c++20
和/std:c++latest
下使用。
正如@chris指出的那样,该功能尚未实现,因为运行时CPU功能检测尚未实现。
用于完成并启用它的 PR 处于"正在进行"状态: https://github.com/microsoft/STL/pull/795
在实现它们之前定义__cpp_lib_bitops
(用于智能感知(和__cpp_lib_int_pow2
(通常(是一个错误。它已由 https://github.com/microsoft/STL/pull/695 修复,但由于更改集成的延迟,该修复程序可能仍然不适用于最新版本。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- vcpkg 添加新库,但找不到
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- std::p opcount 标识符在 MSVC 16.6.0 中找不到