问题描述
我试图找到一份官方文档,向我的团队展示我们现在可以很好地使用 c++20。但是没有文件提到所有编译器都已经完全支持c++20。所以我应该在新项目中使用 C++20。
解决方法
我会使用 C++ 参考网站来查看哪些工具链(以及哪些版本)支持哪些模块,这些模块可能不像您希望的那样得到广泛支持。但是,如果您确切地知道您和您的团队正在使用哪些工具,并且您确切地知道您想要标准的哪些部分(以及它涉及的风险),那么理论上您可以使用标准的某些部分。
就我自己而言,我会尽可能在我自己的项目中使用模块,但我觉得在团队中提出它为时过早。
模块(P1103R3)
- GCC 11 部分
- Clang 8 部分
- MSVC 19.0 (VS 2015) 部分、19.10 (VS 2017) 仅 TS、19.28 (VS 2019) 16.8
- Apple Clang 10.0.1 部分(Xcode 10.2 10E125、Xcode 10.2.1 10E1001、Xcode 10.3 10G8)
- EDG eccp 否
- 英特尔 C++ 否
- IBM XLC++ 否
- Sun/Oracle C++ 否
- Embarcadero C++ Builder 否
- 克雷没有
- Nvidia HPC C++(前波特兰集团/PGI)否
- Nvidia nvcc 否
参考:
https://en.cppreference.com/w/cpp/compiler_support
海湾合作委员会
C++20 核心语言支持状态(11.0 完成,部分模块除外)
https://gcc.gnu.org/projects/cxx-status.html#cxx20
叮当声
https://clang.llvm.org/cxx_status.html#cxx20
https://libcxx.llvm.org/docs/Cxx2aStatus.html
苹果叮当声
https://developer.apple.com/documentation/xcode-release-notes
MSVS
https://github.com/microsoft/STL/wiki/Changelog
https://devblogs.microsoft.com/cppblog/cpp17-20-features-and-fixes-in-vs-2019/
范围
我不确定你指的是哪一个,这个?
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r4.pdf
那么就支持了:
- GCC 10 是
- Clang 13 部分
- MSVC 19.29 是(VS 2019 16.10)
- Apple Clang 否
- EDG eccp 否
- 英特尔 C++ 否
- IBM XLC++ 否
- Sun/Oracle C++ 否
- Embarcadero C++ Builder 否
- 克雷没有
- Nvidia HPC C++(前波特兰集团/PGI)否
- Nvidia nvcc 否