Compiler support for C++26
*
- наведите курсор на ячейку, отмеченную звездочкой
*
, чтобы увидеть дополнительные всплывающие примечания.
DR
nn
- число
nn
после "DR" обозначает целевую ревизию C++, к которой применяется Отчет о Дефектах, например, DR20 → C++20.
Основные возможности языка C++26
|
Функциональность C++26
|
Документ(ы)
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| DR98: Устранение неопределенного поведения при лексическом анализе | P2621R3 | Да | 3.3 | 16.0.0* | |||||||
| DR98: Объявление строковых литералов без возможности кодирования ошибочными | P1854R4 | 14 | 14 | 16.0.0* | |||||||
| Невычисляемые строки | P2361R6 | 14 |
17 (частично)*
18 |
16.0.0* | |||||||
Добавление
@
,
$
и
`
в
базовый набор символов
|
P2558R2 | 15 | Да | 16.0.0* | |||||||
| constexpr приведение из void * ( FTM ) * | P2738R1 | 14 | 17 | ||||||||
| DR20: О пренебрежимости стандартных атрибутов | P2552R3 | 15 | Да | ||||||||
| DR11: Статическое хранилище для инициализаторов в фигурных скобках | P2752R3 | 14 | |||||||||
| Пользовательские сообщения static_assert ( FTM ) * | P2741R3 | 14 | 17 | ||||||||
| Переменные-заполнители без имени ( FTM ) * | P2169R4 | 14 | 18 | ||||||||
| Индексация пакетов ( FTM ) * | P2662R3 | 15 | 19 | ||||||||
| Удаление устаревших арифметических преобразований для перечислений | P2864R2 | 14 | 18 | ||||||||
| DR11/20: Инициализация параметров шаблона | P2308R1 | 9 | 18 | ||||||||
| Запретить привязку возвращённой ссылки к временному объекту | P2748R5 | 14 | 19 | ||||||||
| Атрибуты для structured bindings ( FTM ) * | P0609R3 | 15 | 19 | ||||||||
Ошибочное поведение для
чтений неинициализированных данных
,
[[
indeterminate
]]
атрибут
|
P2795R5 | ||||||||||
| = delete ( "reason" ) ; ( FTM ) * | P2573R2 | 15 | 19 | ||||||||
| Вариативные дружественные функции ( FTM ) * | P2893R3 | 15 | 20 | ||||||||
| DR98: Уточнение правил опускания фигурных скобок в aggregate initialization | P3106R1 | Да | 17 | ||||||||
| DR20: Запретить объявления модулей в виде макросов | P3034R1 | 15 | |||||||||
| DR11: Тривиальные бесконечные циклы не являются неопределённым поведением | P2809R3 | 14 | 19 | ||||||||
| constexpr размещающий new ( FTM ) * ( FTM ) * | P2747R2 | 15 | 20 | ||||||||
| Объявление структурированной привязки как условие ( FTM ) * | P0963R3 | 15 |
6
(частично)*
21 |
||||||||
| Упорядочивание constraints с участием fold expressions ( FTM ) * | P2963R3 | 19 | |||||||||
| Удаление указателя на неполный тип должно быть некорректным | P3144R2 | 15 | 19 | 6.7 | |||||||
| Структурированные привязки могут вводить пакет ( FTM ) * | P1061R10 | 21 | |||||||||
| constexpr структурированные привязки и ссылки на constexpr переменные | P2686R5 | 6.7 | |||||||||
| constexpr исключения : [1] , [2] ( FTM ) * | P3068R6 | ||||||||||
| Оксфордская вариадическая запятая | P3176R1 | 15 | 20 | ||||||||
| Удаление устаревших сравнений массивов | P2865R6 | 15 | 20 | ||||||||
#embed
(
FTM
)
*
|
P1967R14 | 15 | 19 * | ||||||||
| Концепты и шаблонные параметры-шаблоны для переменных ( FTM ) * | P2841R7 | ||||||||||
| Тривиальная перемещаемость ( FTM ) * | P2786R13 | 21 * | |||||||||
| Тривиальные объединения ( FTM ) * | P3074R7 | ||||||||||
| Наблюдаемые контрольные точки | P1494R5 | ||||||||||
| Контракты ( FTM ) * | P2900R14 | ||||||||||
|
Функциональность C++26 |
Документ(ы) |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
Функции библиотеки C++26
|
Функция C++26
|
Документ(ы)
|
GCC libstdc++
|
Clang libc++
|
MSVC STL
|
Apple Clang*
|
|
|---|---|---|---|---|---|---|
| Тестирование успеха или неудачи функций <charconv> ( FTM ) * | P2497R0 | 14 | 18 | 16.0.0* | ||
| std::text_encoding : идентификация текстовых кодировок ( FTM ) * |
P1885R12
P2862R1 |
14 | ||||
| Арифметические перегрузки std::to_string и std::to_wstring используют std::format ( FTM ) * | P2587R3 | 14 | ||||
| Проверка типов аргументов формата ( FTM ) * | P2757R3 | 15 | ||||
| Форматирование указателей ( FTM ) * | P2510R3 | 14 * | 17 * | 19.40* * | ||
| Поддержка хеширования для std::chrono классов значений ( FTM ) * | P2592R3 | |||||
| <rcu> : Read-Copy Update ( FTM ) * | P2545R4 | |||||
| <hazard_pointer> : Указатели опасности ( FTM ) * | P2530R3 | |||||
| ADL-защищённый std::projected | P2538R1 | 14 * | 18 * | 19.38* * | 16.0.0* | |
| constexpr стабильная сортировка ( FTM ) * | P2562R1 | 15 | 21 | |||
| Член std::basic_format_arg::visit() ( FTM ) * | P2637R3 | 15 | 19 | |||
| Член std::variant::visit() ( FTM ) * | P2637R3 | 15 | 18 | |||
| std::is_within_lifetime ( FTM ) * | P2641R4 | |||||
| Расширение ассоциативных контейнеров оставшимися гетерогенными перегрузками ( FTM ) * | P2363R5 | |||||
| Включение возможности использования std::weak_ptr в качестве ключей в неупорядоченных ассоциативных контейнерах ( FTM ) * | P1901R2 | |||||
| Нативные дескрипторы в файловых потоках ( FTM ) * | P1759R6 | 14 | 18 | 16.0.0* | ||
| Взаимодействие строковых потоков с std::string_view ( FTM ) * | P2495R3 | 19 | ||||
| Интерфейсирование std::bitset с std::string_view ( FTM ) * | P2697R1 | 18 | 16.0.0* | |||
| Больше constexpr для <cmath> и <complex> ( FTM ) * ( FTM ) * | P1383R2 | 4.6 (частично)* | ||||
| Добавление новых префиксов СИ 2022 года для отношений: std::quecto , std::ronto , std::ronna , и std::quetta ( FTM ) * | P2734R0 | 14 | 17 * | |||
| std::function_ref : ссылка на вызываемый объект с удалением типа ( FTM ) * | P0792R14 | |||||
| std::copyable_function ( FTM ) * | P2548R6 | 16 | ||||
| std::bind_front , std::bind_back , и std::not_fn для NTTP вызываемых объектов ( FTM ) * ( FTM ) * ( FTM ) * | P2714R1 | |||||
| std::submdspan() ( FTM ) * |
P2630R4
P3355R1 |
|||||
| Автономный язык: Опционально ::operator new | P2013R5 | N/A | ||||
| Автономная реализация std::char_traits , std::errc и функциональности в: <charconv> , <cstdlib> , <cstring> , <cwchar> ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2338R4 | N/A | ||||
| Дополнительные возможности для автономной среды ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2198R7 | Н/П | ||||
| Арифметика с насыщением ( FTM ) * | P0543R3 | 14 | 18 | 16.0.0* | ||
| <debugging> : Поддержка отладки ( FTM ) * |
P2546R5
P2810R4 |
|||||
| <linalg> : Бесплатный функциональный интерфейс линейной алгебры на основе BLAS ( FTM ) * |
P1673R13
P3050R2 P3222R0 |
|||||
| Сделать макрос assert() удобным для пользователя | P2264R7 | |||||
| Строки форматирования времени выполнения ( FTM ) * | P2918R2 | 14 | 18 | 16.0.0* | ||
| std::span над списком инициализации ( FTM ) * | P2447R6 | 15 | 18 | 16.0.0* | ||
| std::span::at() ( FTM ) * | P2821R5 | 14 | 18 | 16.0.0* | ||
| Добавлен кортежный протокол к std::complex ( FTM ) * | P2819R2 | 15 | 19 | |||
| Новая спецификация для std::generate_canonical | P0952R2 | 19.42* | ||||
| Удаление устаревшего typedef std::allocator::is_always_equal | P2868R3 | 15 | 18 | 16.0.0* | ||
| Удаление перегруженной функции std::basic_string::reserve() без аргументов | P2870R3 | 18 | 16.0.0* | |||
| Удаление устаревших фасетов преобразования Unicode ( <codecvt> ) | P2871R3 | 18 | 16.0.0* | |||
| Автономная реализация: удаление std::strtok ( FTM ) * | P2937R0 | 14 | 19.40* | |||
| Автономная библиотека: частичные классы ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2407R5 | 14 | 19.42* | |||
| Автономная библиотека: std::inout , std::expected , std::span ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2833R2 | 14 | 19.42* | |||
| DR23: std::basic_const_iterator должен следовать конвертируемости своего базового типа ( FTM ) * |
P2836R1
P2950R0 |
14 | 19.40* | |||
| DR20: std::make_format_args теперь принимает только ссылки на lvalue вместо forwarding references | P2905R2 | 14 | 18 | 19.40* | 16.0.0* | |
| DR20: Исправление форматирования кодовых единиц как целых чисел ( FTM ) * | P2909R4 | 13.3 | 18 | 19.40* | 16.0.0* | |
| views::concat ( FTM ) * | P2542R8 | 15 | ||||
| Конкатенация строк и строковых представлений ( FTM ) * | P2591R5 | 15 | 19 | |||
| Включение list-инициализации для алгоритмов ( FTM ) * |
P2248R8
P3217R0 |
15 | ||||
| std::ranges::generate_random ( FTM ) * | P1068R11 | |||||
| Сравнения для std::reference_wrapper , и ограничения для сравнений std::pair , std::tuple , std::optional , и std::variant ( FTM ) * ( FTM ) * | P2944R3 | 14 | 19 (частично) * | |||
| Макеты mdspan с заполнением ( FTM ) * | P2642R6 | |||||
| Новый CTAD для std::span и std::mdspan с целочисленными константами | P3029R1 | 19 | ||||
| Атомарные максимум и минимум ( FTM ) * | P0493R5 | |||||
| std::formatter<std::filesystem::path> ( FTM ) * | P2845R8 | |||||
| Печать пустых строк с помощью std::println() ( FTM ) * | P3142R0 | 14 * | 19 * | 19.41* * | ||
| Снять устаревание std::polymorphic_allocator::destroy | P2875R4 | 15 | 19.41* | |||
| Удаление устаревших strstreams | P2867R2 | 19 | ||||
| Удаление устаревших std::shared_ptr Atomic Access API | P2869R4 | |||||
| Удаление std::wstring_convert | P2872R3 | 19 | ||||
| DR23: Разрешить эффективную реализацию std::print ( FTM ) * |
P3107R5
P3235R3 |
19.43* | ||||
| Библиотека управления выполнением ( FTM ) * |
P2300R10
P3396R0 |
|||||
| std::inplace_vector : динамически изменяемый вектор с фиксированной ёмкостью ( FTM ) * | P0843R14 | |||||
| std::philox_engine : генератор псевдослучайных чисел на основе счётчика ( FTM ) * | P2075R6 | |||||
| std::optional поддержка диапазонов ( FTM ) * | P3168R2 | |||||
| std::is_virtual_base_of : типовая характеристика для обнаружения виртуальных базовых классов ( FTM ) * | P2985R0 | 15 | 20 | |||
| std::dims для std::mdspan ( FTM ) * | P2389R2 | 19 | ||||
| DR11: Формальная спецификация типа std::ignore | P2968R2 | 15 | 19 | 19.42* | ||
| DR20: Удаление требования общего ссылочного типа из концепций косвенно вызываемых объектов ( FTM ) * | P2997R1 | 15 | 19 | 19.42* | ||
| Устаревание std::is_trivial и std::is_trivial_v | P3247R2 | 15 | 21 | |||
| DR20: Функциональные объекты алгоритмов | P3136R1 | Да | 14 | 19.39* | 14.0.3* | |
| std::ranges::cache_latest_view ( FTM ) * | P3138R5 | 15 | ||||
| Ограничение std::expected операторов сравнения ( FTM ) * | P3379R0 | 15 | ||||
| std::aligned_accessor : акцессор std::mdspan , выражающий избыточное выравнивание указателя ( FTM ) * | P2897R7 | 21 | ||||
| std::is_sufficiently_aligned : проверяет предусловие выравнивания указателя ( FTM ) * | P2897R7 | 21 | ||||
| std::atomic_ref::address() ( FTM ) * | P2835R7 | |||||
| DR11/20: cv-квалифицированные типы в std::atomic и std::atomic_ref | P3323R1 | 19.44* | ||||
| constexpr std::atomic и std::atomic_ref ( FTM ) * | P3309R3 | |||||
| constexpr для специализированных алгоритмов работы с памятью ( FTM ) * |
P3508R0
P3369R0 |
15 | ||||
| <stdbit.h> и <stdckdint.h> | P3370R1 | 15 | ||||
| <simd> : типы для параллельной обработки данных ( FTM ) * ( FTM ) * |
P1928R15
P3430R3 P3441R2 P3287R3 P2663R7 P2933R4 |
|||||
| Утилита для создания сред выполнения | P3325R5 | |||||
| constexpr для типов исключений, например std::bad_alloc , std::bad_cast и др. ( FTM ) * |
P3068R6
P3378R2 |
|||||
| Тривиальная перемещаемость: признаки и операции ( FTM ) * | P2786R13 | |||||
Деактивировать и объявить устаревшим
std::memory_order::consume
|
P3475R1 | |||||
| Поместить std::monostate в <utility> | P0472R3 | 15 | 21 | 19.50* | ||
| std::indirect ( FTM ) * | P3019R14 | |||||
| std::polymorphic ( FTM ) * | P3019R14 | |||||
|
Больше
constexpr
для контейнеров и адаптеров контейнеров:
std::deque
,
std::flat_map
,
std::flat_multimap
,
std::flat_set
,
std::flat_multiset
,
std::forward_list
,
std::list
,
std::map
,
std::multimap
,
std::queue
,
std::priority_queue
,
std::set
,
std::multiset
,
std::stack
,
std::unordered_map
,
std::unordered_multimap
,
std::unordered_set
, и
std::unordered_multiset
|
P3372R3 | |||||
| constexpr std::inplace_vector для нетривиальных типов ( FTM ) * | P3074R7 | |||||
| std::ranges::to_input_view ( FTM ) * | P3137R3 | 15 | ||||
| std::ranges::approximately_sized_range и std::ranges::reserve_hint ( FTM ) * | P2846R6 | |||||
| <hive> : Контейнер на основе блоков, который повторно использует ячейки памяти удалённых элементов ( FTM ) * | P0447R28 | |||||
| <contracts> : Поддержка обработки нарушений контрактов ( FTM ) * | P2900R14 | |||||
| Усиление стандартной библиотеки ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P3471R4 | 15 (частично)* | 19.44* (частично)* | |||
|
Автономная библиотека:
<algorithm>
,
<numeric>
,
<random>
, (
<execution>
,
<memory>
)
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * |
P2976R1 | |||||
| DR20: Преобразование смежных итераторов в указатели | P3349R0 | 15 | ||||
|
Функция C++26 |
Документ(ы) |
GCC libstdc++
|
Clang libc++
|
MSVC STL
|
Apple Clang*
|