如何在g++中使用C++ 20

43

我正在尝试访问std::popcount,但似乎它只在C++20中存在

当我尝试使用g++ -std=c++20 main.cpp编译时,它会说g++:错误:无法识别命令行选项“-std=c++20”;你是指“-std=c++03”吗?

我该如何告诉g++使用c++20?

我正在使用Ubuntu 18.04


10
您的g++版本过旧。您需要至少9+ 版本才能使用popcount(并且需要使用-std=c++2a),或者需要使用10+版本才能编写C++20代码。 - Barry
4
你正在使用哪个版本的GCC?它是否支持C++20 - Brian61354270
重要提示:由于ISO C++20标准非常新,GCC的支持是实验性的。https://gcc.gnu.org/projects/cxx-status.html#cxx20 - Yvan Pearson
如果您使用g++-9和cmake,请在CMakeLists中尝试使用以下命令:set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a") set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a") - Kevin Chan
4个回答

60

从GCC 8开始,C++20特性已经可用。

为了启用C++20支持,请添加命令行参数

-std=c++20

对于G++ 9及更早版本,请使用

-std=c++2a

或者,为了在C++20特性之外还启用GNU扩展,请添加

-std=gnu++20


1
还有-std=gnu++2a - Kamil
8
“对于G++ 9及以上版本”应改为“对于G++ 9及之前的版本”。 - xxllxx666

15

我建议您尝试更新gcc。C++20是在相当新的gcc 8版本中引入的。


7
如果可以的话,您可以升级到Ubuntu 20.04 LTS,该版本默认包含GCC 9。这将使您能够使用C++ 20,从而使用std::popcount
注意:在GCC 9及更早版本中,请使用-std=c++2a

1

目前有不同版本的编译器,g++通常与旧版本链接。对于我来说,当前版本是g++-9,它显然不理解C++20。

C++20需要安装gcc-10g++-10(以及相关依赖项)。假设您已经安装了它们,则需要运行以下命令:

g++-10 -std=c++20 main.cpp

提示:如果您想将v10作为默认版本,请更新链接的gccg++和其他相关组件,并按全名使用v9(或任何旧版本)。

编辑:根据主机操作系统的不同,可能还安装了v11和v12,但命名仍然很重要。请替换为g++-11g++-12


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接