我在CentOS 9上安装了g++
g++ (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)
我可以使用开关-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上完成?
1条答案
按热度按时间yi0zb3m41#
文件路径中的
11
是编译器版本,不是C版本,所以没有20
对应的路径也不是问题。如果
-std=c++20
没有给予错误,那么您就拥有了(至少在某种程度上)C20支持。理论上有一个
__cplusplus
宏,它被预定义为至少202002L
的值以支持C20,但实际上这并不意味着所有C20特性都被支持。还有一些特定于feature test macros的功能可能会有所帮助。
有关哪个编译器版本具体支持哪些内容的概述,请参阅https://en.cppreference.com/w/cpp/compiler_support以及各个编译器的相应页面。
正如您所看到的,GCC 11基本上支持了C++20,除了一些项目,特别是在标准库中,例如完整的模块支持,
std::string
和std::vector
的constexpr
,原子共享指针,特别是std::format
。