cpp/编译器支持/供应商
来自 cppreference.cn
[编辑] 各个供应商兼容性检查列表
[编辑] GCC (更新于 2025-01)
- C++11 核心语言支持状态 (截至 4.8.1 版本完全支持,除了 N2670,该特性未被任何编译器实现,并在 C++23 中移除)
- C++11 库支持状态 (截至 5.1 版本完全支持)
- C++14 核心语言支持状态 (截至 5.1 版本完全支持)
- C++14 库支持状态 (截至 5.1 版本完全支持)
- C++17 核心语言支持状态 (截至 7.1 版本完全支持)
- C++17 库支持状态 (截至 12.0 版本完全支持)
- C++20 核心语言支持状态 (截至 11.0 版本完全支持,模块部分除外)
- C++20 库支持状态 (截至 14.0 版本完全支持)
- C++23 核心语言支持状态
- C++23 库支持状态
- C++26 核心语言支持状态
- 技术规范支持状态
- 核心语言缺陷报告状态
[编辑] Clang (更新于 2025-01)
- 实时 libc++ 一致性状态
- C++11 核心语言支持状态 (截至 3.3 版本完全支持)
- C++11 库支持状态 (截至 2012-07-29 版本完全支持)
- C++14 核心语言支持状态 (截至 3.4 版本完全支持)
- C++14 库支持状态 (截至 3.5 版本完全支持)
- C++17 核心语言支持状态 (截至 5.0 版本完全支持)
- C++17 库支持状态
- C++20 核心语言支持状态
- C++20 库支持状态
- C++23 核心语言支持状态
- C++23 库支持状态
- C++26 核心语言支持状态
- C++26 库支持状态
- 技术规范支持状态
- 核心语言缺陷报告状态
[编辑] Apple Clang (更新于 2025-01)
[编辑] Microsoft Visual Studio (更新于 2025-02)
- Microsoft C/C++ 语言一致性 (自 Visual Studio 2015 起)
- STL 变更日志 (自 Visual Studio 2019 16.5 起)
- 以上未包含特性的参考
- C++11/14/17 特性支持 (现代 C++) 包括 C++11 核心语言特性
- Visual C++ 2003 年至 2015 年的新特性 包括 C++11 N1913
- VS “15” Preview 5 中的 C++14/17 特性和 STL 修复 包括 C++14 LWG2112、LWG2246 和 LWG2285 以及 C++17 LWG2296
- VS 2017 15.8 中的 STL 特性和修复 包括 C++17 LWG2911
- Visual Studio 2022 中的 C++ 一致性改进、行为变更和错误修复 包括 C++23 P2334R1
- CWG 2518 尚未实现 - 未实例化的模板中的 static_assert 产生错误 包括 C++23 CWG2518
- Visual Studio 2022 版本 17.12 中的 MSVC 编译器语言更新 包括 C++23 P2128R6
- Visual Studio 2022 17.13 中 MSVC 的 C++ 语言更新 包括 C++23 P0330R8、P0847R7 和 P2242R3
[编辑] Intel C++ (更新于 2023-01)
- C++11 核心语言支持状态 (截至 15.0 版本完全支持)
- C++14 核心语言支持状态 (截至 17.0 版本功能完整 - N3664 是一项优化)
- C++17 核心语言支持状态 (不完整)
- C++20 核心语言支持状态 (不完整)
- Intel 19.0 beta 的 C++17 特性
- Intel 不发布 C++ 标准库的实现,除了
- 并行 STL (C++17 标准库算法的实现,支持执行策略)
- Intel 与 GCC libstdc++ 版本的兼容性
[编辑] EDG (更新于 2025-01)
- C++11 核心语言支持状态
- C++14 核心语言支持状态
- C++17 核心语言支持状态
- C++20 核心语言支持状态
- C++23 核心语言支持状态
- C++26 核心语言支持状态
- EDG 不发布 C++ 标准库的实现
[编辑] Oracle C++ (更新于 2017-07)
- 版本号是编译器版本,不是 Oracle Studio 版本
- 5.13 中的 C++11 核心语言支持状态
- 5.14 中添加了 C++14 特性
- 5.15 中添加了完整的 C++14 支持。
- Oracle 发布了 4 个 C++ 标准库的实现
- libCstd (RogueWave 标准库版本 2),早于 C++98
- stlport4 (STLport 标准库版本 4.5.3),早于 C++03
- stdcxx4 (Apache 标准库版本 4),早于 C++11
- libstdc++ (GCC 运行时库,根据版本支持 C++11 和 C++14)
[编辑] IBM XL C++ (更新于 2018-05)
- 用于 Linux 的 IBM XL C++
- 核心语言支持状态:C++11 在 13.1.6 版本中完成,C++14 在 16.1.0 版本中部分完成
- IBM 不发布用于 Linux 的 C++ 标准库实现 (使用 GNU libstdc++)
- 用于 AIX 的 IBM XL C++
- 核心语言支持状态:C++11 在 13.1.3 和 16.1.0 (xlC 前端) 版本中部分完成,在 16.1.0 (xlclang 前端) 版本中完成
- IBM 发布了 用于 AIX 的 Dinkumware 库版本,完全支持 C++ TR1,包括 <regex>,但不包括 C++11
- IBM XL C/C++ 编译器特性
[编辑] HP aCC
- HP aC++ A.06.28 发行说明 (包括 C++11 核心语言特性)
- HP 发布了 RogueWave STL 2.0 版本的 C++98 标准库实现
[编辑] Digital Mars C++
[编辑] Embarcadero C++
- 语言特性兼容性状态 (RAD Studio 10.1 Berlin),包括传统编译器和 Clang 增强型编译器 (基于 Clang 3.3) 支持的 C++11 特性
- 语言特性兼容性状态 (RAD Studio 10.3 Rio),包括传统编译器支持的 C++11 特性以及 Clang 增强型编译器 (基于 Clang 5.0) 支持的 C++11、C++14 和 C++17 特性
[编辑] Cray (更新于 2023-02)
- Cray C 和 C++ 参考手册 (8.4) 对于 8.4 版本,声明支持所有 C++14 特性,除了 alignas
- Cray C 和 C++ 参考手册 (8.6) 对于 8.6 版本,声明支持所有 C++14 特性
- Cray C 和 C++ 参考手册 (9.1) 对于 9.1 版本,未声明支持 C++14 以外的特性
- HPE Cray Clang C 和 C++ 快速参考 (14.0) (S-2179) 从 11 及更高版本 (至少到 14) 均基于 Clang,并且通常预计具有相应的语言支持。 涉及“有趣”的代码生成或链接行为的特性(例如协程或模块)可能会滞后,因为编译器支持为 GPU 和其他类似受限设备生成代码
[编辑] Portland Group (PGI) (更新于 2019-01)
- 2016 年的发行说明声明支持 C++14,除了“广义 constexpr 和 constexpr 成员函数以及隐式 const,变量模板,阐明内存分配 (合并分配)”
- 2018 年的发行说明
- PGI 19.1 的参考手册
- PGI 不发布 C++ 标准库的实现
[编辑] Nvidia Cuda nvcc (更新于 2023-01-12)
- CUDA C++ 编程指南 (v12.0)
- nvcc 11.0 及更高版本支持所有 C++17 语言特性,但受此处描述的限制约束
- nvcc 12.0 及更高版本支持所有 C++20 语言特性,但受此处描述的限制约束
- NVCC 不发布 C++ 标准库的实现
[编辑] Texas Instruments (更新于 2018-05)
- cl430 版本 v18.1.0 声称支持 C++14
[编辑] Analog Devices (更新于 2018-05)
- 用于 SHARC 的 CrossCore Embedded Studio 2.8.0 声称支持 C++11