是不是C++20模块和范围在所有编译器(MSVC、CLang、GCC)中都完全可用



我正试图找到一份官方文档,向我的团队展示我们现在可以很好地使用c++20。但是没有任何文档提到所有编译器都已经完全支持c++20。那么我应该在新项目中使用C++20吗。

我会使用C++参考网站来了解哪些工具链(以及哪些版本(支持什么,这些模块可能不会像你希望的那样得到广泛支持。然而,如果你确切地知道你和你的团队正在使用什么工具,并且你确切地了解你想要标准的哪些部分(以及它涉及的风险(,那么理论上你可以使用标准的某些部分。

就我自己而言,我会尽可能在自己的项目中使用模块,但我觉得在团队中提出还为时过早。

模块(P1103R3(

  • GCC 11部分
  • Clang 8局部
  • MSVC 19.0(与2015年相比(部分、19.10(与2017年相比(仅TS,19.28(与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

GCC

C++20核心语言支持状态(从11.0起完成,除部分模块外(

https://gcc.gnu.org/projects/cxx-status.html#cxx20

Clang

https://clang.llvm.org/cxx_status.html#cxx20

https://libcxx.llvm.org/docs/Cxx2aStatus.html

Apple Clang

https://developer.apple.com/documentation/xcode-release-notes

msv

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(与2019年16.10相比(
  • Apple Clang
  • EDG eccp
  • 英特尔C++
  • IBM XLC++
  • Sun/Oracle C++
  • Embarcadero C++Builder
  • 克雷
  • Nvidia HPC C++(前波特兰集团/PGI(
  • Nvidia nvcc

最新更新