cpp/compiler support/vendors
From cppreference.net
<
cpp
|
compiler support
各厂商兼容性清单
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 测试版中的 C++17 特性
-
Intel 不提供 C++ 标准库实现,但以下情况除外:
- Parallel 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提供四种C++标准库实现:
- libCstd(RogueWave标准库2.0版),早于C++98标准
- stlport4(STLport标准库4.5.3版),早于C++03标准
- stdcxx4(Apache标准库4.0版),早于C++11标准
- libstdc++(GCC运行时库,根据发行版本提供C++11和C++14支持)
IBM XL C++ (更新于 2018-05)
-
IBM XL C++ for Linux
- 核心语言支持状态 :C++11 自 13.1.6 版本起完全支持,C++14 在 16.1.0 版本中部分支持
- IBM 未为 Linux 提供 C++ 标准库实现(使用 GNU libstdc++)
-
IBM XL C++ for AIX
- 核心语言支持状态 :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 3.3的增强型编译器所支持的C++11特性
- 语言特性兼容状态 (RAD Studio 10.3 Rio),包含传统编译器支持的C++11特性,以及基于Clang 5.0的增强型编译器支持的C++11、C++14和C++17特性
Cray (更新于 2023-02)
- Cray C和C++参考手册 (8.4) 版本8.4声明支持除alignas外的全部C++14特性
- 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)
- 所有 C++17 语言特性在 nvcc 11.0 及更高版本中均受支持,具体限制请参阅 此处
- 所有 C++20 语言特性在 nvcc 12.0 及更高版本中均受支持,具体限制请参阅 此处
- NVCC 不提供 C++ 标准库实现
德州仪器 (更新于 2018-05)
- cl430 版本 v18.1.0 声称支持 C++14
亚德诺半导体 (更新于 2018-05)
- CrossCore Embedded Studio 2.8.0 for SHARC 声称支持 C++11