Поддержка компиляторов C++29
От ru.cppreference.net
* - наведите указатель на ячейку, отмеченную звездочкой *, чтобы увидеть дополнительные всплывающие примечания.
DRnn - число nn после "DR" обозначает целевую версию C++, к которой применяется отчет об ошибке, например, DR20 → C++20.
Основные возможности языка C++29
| Возможность C++29 |
Документы |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ex PGI)* |
Nvidia nvcc |
Cray |
|
|---|---|---|---|---|---|---|---|---|---|---|---|
#embed параметр смещения (FTM)*
|
P3540R3 | ||||||||||
| Контракты для виртуальных функций (FTM)* | P3097R3 | ||||||||||
| Индексация пакетов для шаблонов (FTM)* | P3670R4 | ||||||||||
| Именованные инициализаторы для базовых классов (FTM)* | P2287R6 | ||||||||||
| Функции освобождения со спецификацией исключения, генерирующей исключения, являются некорректными | P3424R2 | ||||||||||
| Условные спецификаторы noexcept в составных требованиях (FTM)* | P3822R2 | ||||||||||
| Установка по умолчанию функций операторов постфиксного инкремента и декремента | P3668R4 | ||||||||||
| Добавление ограничений к функциям операторов присваивания по умолчанию | P2953R5 | ||||||||||
| DR26: значения только для consteval (FTM)* | P4101R1 | ||||||||||
| DR23: Разрешение фигмента и сокращения в именованных универсальных символьных escape-последовательностях | P3733R1 | ||||||||||
| DR20: Устранение взаимной исключительности для функций возврата обещаний корутины (FTM)* | P3950R1 | ||||||||||
| DR: Корректировка идентификатора в соответствии с новыми рекомендациями Unicode | P3658R1 | ||||||||||
| DR: Явный захват лямбды объявляется и инициализируется в лексическом порядке | P3847R1 | 3.1 | |||||||||
| DR: Разрешение компоновки языка C для шаблонов | P2243R0 | ||||||||||
| DR: Уточнение поведения переполнения с плавающей запятой | P3899R3 | ||||||||||
| DR: Недетерминированное происхождение указателей | P2434R5 | ||||||||||
| DR: Разрешение зануления конца времени жизни указателя для атомарных и изменчивых доступов | P2414R12 | ||||||||||
| DR: Определение операций загрузки и сохранения для недопустимых указателей | P3347R6 | ||||||||||
| Возможность C++29 |
Документы |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ex 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 | |||||
| Перестановки битов (FTM)* (FTM)* | P3104R6 P3772R2 |
|||||
| 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* |