你如何确保 C++20 支持?

How do you ensure C++20 support?

我在 CentOS9

上安装了 g++
g++ (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)

我可以在没有 errors/warnings 的情况下使用开关 -std=c++20 进行编译。

当我在文件系统中搜索“11”时,我发现

/usr/lib/gcc/x86_64-redhat-linux/11
/usr/include/c++/11
/usr/libexec/gcc/x86_64-redhat-linux/11

但是当我搜索“20”时,我什么也没找到。

如何“安装”C++ 20?它是什么以及如何在 RH/CentOS 上完成?

文件路径中的

11是编译器版本,不是C++版本。所以有20.

没有对应的路径不是问题

如果 -std=c++20 没有给出错误,则说明您(至少在某种程度上)支持 C++20。

理论上有 __cplusplus 宏,它被预定义为至少 202002L 的值以启用 C++20 支持,但实际上这并不意味着所有 C+支持 +20 项功能。

还有 feature-specific feature test macros 可能对您有帮助。

有关编译器版本确切支持的概述,请参阅 https://en.cppreference.com/w/cpp/compiler_support 以及各个编译器的相应页面。

如您所见,GCC 11 几乎完全支持 C++20,除了少数项​​目,特别是在标准库中,例如完整的模块支持,constexpr for std::stringstd::vector,原子共享指针,特别是 std::format.