你如何确保 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::string
和 std::vector
,原子共享指针,特别是 std::format
.
我在 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::string
和 std::vector
,原子共享指针,特别是 std::format
.