标准库上的 clang++ 错误取决于 -std=c++2b 版本,并在使用 -g 标志时发出警告

问题描述 投票:0回答:1

虽然使用 g++ 编译可以正常工作 如果我用 clang++ 编译,下面的命令可以正确编译

clang++ -std=gnu++20 -c 03_vect.cpp -o Debug/03_vect.cpp.o

当命令如下时

clang++ -std=gnu++2b -c 03_vect.cpp -o Debug/03_vect.cpp.o;ls -l Debug/03_vect.cpp.o

给予

In file included from 03_vect.cpp:1:
In file included from ./00_usefull_macros.h:13:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/iostream:41:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/ostream:40:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/ios:44:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/ios_base.h:41:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/locale_classes.h:40:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/string:48:
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_iterator.h:2618:35: error: missing 'typename' prior to dependent type name 'iterator_traits<_It>::iterator_category'
      { using iterator_category = iterator_traits<_It>::iterator_category; };

此外,如果我使用标志 -g 进行编译,它会发出警告:

03_vect.s:8:2:警告:MD5 校验和的使用不一致 .文件1“03_vect.cpp”

以上有什么经验吗?

linux clang++
1个回答
0
投票

你需要 clang-16。早期版本不实现P0634R3

libstdc++
在c++2b模式下使用此功能。

© www.soinside.com 2019 - 2024. All rights reserved.