Поддержка C++29 компиляторами
* — наведите курсор на ячейку, отмеченную звездочкой *, чтобы увидеть дополнительные всплывающие примечания.
DRnn — число nn после «DR» обозначает целевую редакцию C++, к которой применяется отчёт об ошибке, например, DR20 → C++20.
Основные возможности языка C++29
| Возможность C++29 | Документ(ы) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ранее PGI)* |
Nvidia nvcc |
Cray | |
|---|---|---|---|---|---|---|---|---|---|---|---|
#embed — параметр смещения (FTM)* | P3540R3 | 17 | |||||||||
| Контракты для виртуальных функций (FTM)* | P3097R3 | ||||||||||
| Индексация пакетов в шаблонах (FTM)* | P3670R4 | ||||||||||
| Именованные инициализаторы для базовых классов (FTM)* | P2287R6 | 17 | |||||||||
| Функции освобождения памяти с бросающей спецификацией исключений являются некорректными | P3424R2 | 17 | |||||||||
| Условные спецификаторы noexcept в составных требованиях (FTM)* | P3822R2 | ||||||||||
| Возможность использовать default для функций постфиксного инкремента и декремента | P3668R4 | ||||||||||
| Добавление ограничений для функций оператора присваивания, заданных по умолчанию | P2953R5 | 17 | |||||||||
| DR26: значения только для consteval (FTM)* | P4101R1 | ||||||||||
| DR23: разрешение фиктивных форм и сокращений в именованных универсальных символьных escape-последовательностях | P3733R1 | 17 | |||||||||
| DR20: устранение взаимной исключительности функций возврата promise корутины (FTM)* | P3950R1 | ||||||||||
| DR: корректировка идентификатора в соответствии с новыми рекомендациями Unicode | P3658R1 | 17 | |||||||||
| DR: Явный захват лямбды объявляется и инициализируется в лексическом порядке | P3847R1 | Да | 3.1 | ||||||||
| DR: разрешение связывания с языком C для шаблонов | P2243R0 | ||||||||||
| DR: уточнение поведения переполнения чисел с плавающей точкой | P3899R3 | 12 | |||||||||
| DR: недетерминированное происхождение указателей | P2434R5 | ||||||||||
| DR: устранение проблемы преждевременного завершения времени жизни указателя при атомарном и volatile-доступе | P2414R12 | ||||||||||
| DR: определение операций загрузки и сохранения для недопустимых указателей | P3347R6 | ||||||||||
| Возможность C++29 | Документ(ы) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ранее PGI)* |
Nvidia nvcc |
Cray |
Возможности библиотеки C++29
| Возможность C++29 | Документ(ы) |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* | |
|---|---|---|---|---|---|---|
| Улучшенная функция поиска для контейнеров map (FTM)* | P3091R6 | |||||
| Маркировка указателей (FTM)* | P3125R6 | |||||
| Атрибуты потоков (FTM)* | P2019R9 | |||||
| Пакетная обработка указателей опасности (FTM)* | P3428R4 | |||||
<bit>: перестановки битов (FTM)* | P3104R6 | |||||
<simd>: перестановки битов (FTM)* | P3772R2 | |||||
<bit>, <simd>: std::shl и std::shr (FTM)* (FTM)* | P3793R2 | |||||
Операции копирования и заполнения std::mdspan (FTM)* | P3242R4 | |||||
std::simd::iota (FTM)* | P3319R6 | |||||
std::expected::has_error() (FTM)* | P3798R1 | |||||
view_interface::at() (FTM)* | P3052R2 | |||||
std::formatter<std::error_code> | P3395R6 | |||||
Исправление представления чисел с плавающей точкой по умолчанию в std::to_chars (FTM)* | P3505R4 | |||||
Требование std::intptr_t и std::uintptr_t | P3248R5 | |||||
| Устаревание знаковых символьных типов в потоках ввода-вывода | P3154R3 | |||||
DR26: отмена поддержки строковых литералов в std::constant_wrapper (FTM)* | P4206R0 | 17 | ||||
| Возможность C++29 | Документ(ы) |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/compiler_support/29