Namespaces
Variants

C++26

От ru.cppreference.net
< cpp

Следующее поколение стандарта C++.

Текущий график IS для C++26: P1000R6 (2024-05-14).

Новые возможности языка

Новые возможности библиотеки

Новые модули

Новые заголовки

Заголовки для совместимости с C:

Устаревшие возможности

Удалённые возможности

Объявленные устаревшими возможности

Отчёты об ошибках

Поддержка компиляторами

Основная статья: Поддержка компиляторами C++26

Возможности ядра C++26

14 17 15 21
Возможность 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
Переменные-заполнители без имени  (FTM)* P2169R4 14 18
Индексация пакетов  (FTM)* P2662R3 15 19
Удаление устаревшего арифметического преобразования для перечислений P2864R2 14 18
DR11/20: Инициализация параметров шаблона P2308R1 9 18
Запрет привязки возвращаемой ссылки к временному объекту P2748R5 14 19
Атрибуты для структурированных привязок  (FTM)* P0609R3 15 19
Ошибочное поведение для неинициализированных чтений, [[indeterminate]] атрибут P2795R5
P3684R1
16
= delete("reason");  (FTM)* P2573R2 15 19
Вариативные друзья  (FTM)* P2893R3 15 20
DR98: Уточнение правил опускания скобок в агрегатной инициализации P3106R1 Да 17
DR20: Запрет объявлений модулей в качестве макросов P3034R1 15
DR11: Тривиальные бесконечные циклы не являются неопределённым поведением P2809R3 14 19
constexpr placement new  (FTM)* P2747R2 15 20
Объявление структурированной привязки  как условие (FTM)* P0963R3 6 (неполная)*
Упорядочение ограничений с участием fold-выражений  (FTM)* P2963R3 19
Удаление указателя на неполный тип должно быть некорректным P3144R2 15 19 6.7
Структурированные привязки могут вводить пакет  (FTM)* P1061R10 16 21
constexpr структурированные привязки и ссылки на constexpr-переменные P2686R5 16* 22 (неполная)* 6.7
constexpr исключения  (FTM)* P3068R6 16
Оксфордская вариативная запятая P3176R1 15 20
Удаление устаревших сравнений массивов P2865R6 15 20
#embed  (FTM)* P1967R14 15 19*
Параметры шаблонов-концептов и шаблонов-переменных  (FTM)* P2841R7 22 (неполная)*
Тривиальные объединения  (FTM)* P3074R7
P3726R2
Наблюдаемые контрольные точки P1494R5 16
Контракты  (FTM)* P2900R14 16
Отражение  (FTM)* P2996R13
P3096R12
P3293R3
P3394R4
P3795R2
16*
Операторы развёртывания  (FTM)* P1306R5 16
constexpr виртуальное наследование  (FTM)* P3533R2 16
Диагностика ошибок препроцессора P2843R3 16
Разрешение привязки main к глобальному модулю P3618R0 16
DR20: Разрешение #line перед объявлениями модулей P3868R1
DR17: Вывод аргументов шаблона класса для параметров-шаблонов типов P3865R3
Константность выражений сращивания в контрактных утверждениях P3598R0
 

Возможность C++26
 

Документ(ы)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

Возможности библиотеки C++26

14 18 1616 16 (неполная)P3325R517
Возможность C++26

 
Документ(ы)

 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
Проверка успеха или неудачи функций <charconv> ( FTM)* P2497R0 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 16
<rcu>: Чтение-Копирование-Обновление (Read-Copy Update) ( FTM)* P2545R4
<hazard_pointer>: Указатели опасности (Hazard Pointers) ( 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
P3450R1
22 (неполная)*
Расширение ассоциативных контейнеров оставшимися гетерогенными перегрузками  (FTM)* P2363R5 16
Разрешение использования std::weak_ptr в качестве ключей в неупорядоченных ассоциативных контейнерах  (FTM)* P1901R2 16
Родные дескрипторы в файловых потоках  (FTM)* P1759R6 14 18 16.0.0*
Организация взаимодействия строковых потоков с std::string_view  (FTM)* P2495R3 16 19
Организация взаимодействия std::bitset с std::string_view  (FTM)* P2697R1 16 18 16.0.0*
Больше constexpr для <cmath> и <complex>  (FTM)*  (FTM)* P1383R2 4.6 (неполная)*
Добавление новых префиксов СИ 2022 года для ratios: std::quecto, std::ronto, std::ronna и std::quetta  (FTM)* P2734R0 14 17*
std::function_ref: стирающая тип ссылка на вызываемый объект  (FTM)* P0792R14
P3961R1
16
std::copyable_function  (FTM)* P2548R6 16
std::bind_front, std::bind_back и std::not_fn для NTTP-вызываемых объектов
  (FTM)*  (FTM)*  (FTM)*
P2714R1 16
std::submdspan()  (FTM)* P2630R4
P3355R1
P3663R3
P3982R2
16
Автономный язык: необязательный ::operator new P2013R5 19.38*
Автономные std::char_traits, std::errc и средства в: <charconv>, <cstdlib>, <cstring>, <cwchar>  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)* P2338R4 19.38*
Дополнительные автономные средства
  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P2198R7 19.38*
Насыщающая арифметика  (FTM)* P0543R3
P4052R0
14
16*
18 16.0.0*
<debugging>: Поддержка отладки ( FTM)* P2546R5
P2810R4
*
<linalg>: свободный интерфейс линейной алгебры на основе BLAS  (FTM)* P1673R13
P3050R2
P3222R0
P3371R5
Удобство использования макроса assert() P2264R7 Да*
Динамические строки форматирования  (FTM)* P2918R2
P3953R3
14*
16*
18 16.0.0*
std::span::at()  (FTM)* P2821R5 14 18 16.0.0*
Добавлен протокол кортежа для std::complex  (FTM)* P2819R2 15 19
Новая спецификация для std::generate_canonical P0952R2 16 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-ссылок 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
Разрешение списочной инициализации для алгоритмов  (FTM)* P2248R8
P3217R0
P3787R2
15
std::ranges::generate_random  (FTM)* P1068R11
Сравнения для std::reference_wrapper и ограничения для сравнений std::pair, std::tuple, std::optional и std::variant  (FTM)*  (FTM)* P2944R3 14 22
19 (неполная)*
Дополненные (padded) схемы размещения mdspan  (FTM)* P2642R6 16
Новый CTAD для std::span и std::mdspan с целочисленными константами P3029R1 16 19
Атомарные максимум и минимум  (FTM)* P0493R5 16
std::formatter<std::filesystem::path>  (FTM)* P2845R8 16
Печать пустых строк с помощью std::println()  (FTM)* P3142R0 14* 19* 19.41**
Отмена устаревания std::polymorphic_allocator::destroy P2875R4 14.3* 15 19.41*
Удаление устаревших strstreams P2867R2 19
Удаление устаревших API атомарного доступа std::shared_ptr P2869R4
Удаление std::wstring_convert P2872R3 19
DR23: Разрешение эффективной реализации std::print  (FTM)* P3107R5
P3235R3
16 19.43*
constexpr placement new  (FTM)* P2747R2 15 20
Библиотека управления выполнением  (FTM)* P2300R10
P3388R3
P3396R1
P3433R1
P3481R5
P3570R2
P3682R0
P3887R1
Дополнительные исправления библиотеки управления выполнением P3373R4
P3826R5
P3986R1
P4154R0
P4159R0
std::inplace_vector: динамически изменяемый вектор с фиксированной ёмкостью  (FTM)* P0843R14
P3981R2
P4022R0
16
std::philox_engine: генератор случайных чисел на основе счётчика  (FTM)* P2075R6 16
Поддержка диапазонов для std::optional  (FTM)* P3168R2
P3913R1
22 (неполная)*
std::is_virtual_base_of: типовая характеристика для обнаружения виртуальных базовых классов  (FTM)* P2985R0 15 20
std::dims для std::mdspan  (FTM)* P2389R2 16 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 Да Да 19.39* Да
std::ranges::cache_latest_view  (FTM)* P3138R5 15
Ограничение std::expected операторов равенства  (FTM)* P3379R0 15 22
std::aligned_accessor: аксессор std::mdspan, выражающий избыточное выравнивание указателя  (FTM)* P2897R7 16
std::is_sufficiently_aligned: проверка предусловия выравнивания указателя  (FTM)* P2897R7 16
std::atomic_ref::address()  (FTM)* P2835R7
P3936R1
16 (неполная)* 22 (неполная)*
DR11/20: cv-квалифицированные типы в std::atomic и std::atomic_ref P3323R1 16 19.44*
constexpr std::atomic и std::atomic_ref  (FTM)* P3309R3
constexpr специализированные алгоритмы работы с памятью  (FTM)* P3508R0
P3369R0
15
<stdbit.h> и <stdckdint.h>  (FTM)*  (FTM)* P3370R1 15*
16
<simd>: типы для параллельной обработки данных ( FTM)* P1928R15
P3430R3
P2876R3
P3691R1
P3922R1
P3690R1
P3932R0
P4012R1
*
Математические операции SIMD P1928R15
P3844R4
Утилита для создания сред выполнения
constexpr типы исключений, например std::bad_alloc, std::bad_cast и т.д.  (FTM)* P3068R6
P3378R2
P3842R2
16
std::simd::chunk P3441R2 16
Битовые операции SIMD  (FTM)* P2933R4
Поддержка чередующихся значений std::complex в std::simd  (FTM)* P2663R7
Обезвредить и объявить устаревшим std::memory_order::consume P3475R1
Поместить std::monostate в <utility> P0472R3 15 21 19.50*
std::indirect  (FTM)* P3019R14 16
std::polymorphic  (FTM)* P3019R14 16
Больше constexpr контейнеров и адаптеров
  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P3372R3 16 (неполная)* 21 (неполная)*
22 (неполная)*
constexpr std::inplace_vector для нетривиальных типов  (FTM)* P3074R7
std::ranges::as_input_view  (FTM)* P3137R3
P3828R1
15*
16*
std::ranges::approximately_sized_range и std::ranges::reserve_hint  (FTM)* P2846R6
<hive>: контейнер на основе корзин, повторно использующий ячейки памяти от удалённых элементов  (FTM)* P0447R28
Библиотечная поддержка наблюдаемых контрольных точек  (FTM)* P1494R5
P3641R0
16
<contracts>: поддержка обработки нарушений контрактов  (FTM)* P2900R14
P3819R0
16
Ужесточение стандартной библиотеки P3471R4
P3697R1
P3878R1
15 (неполная)* 19.44* (неполная)* 19.50* (неполная)*
Автономная библиотека: <algorithm>, <execution>, <memory>, <numeric>
и <random>  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P2976R1
DR20: Преобразование последовательных итераторов в указатели P3349R0 15 19.51*
<meta>: библиотечная поддержка отражения  (FTM)* P2996R13
P3394R4
P3293R3
P3096R12
P3795R2
P4156R0
16 (неполная)*
constexpr исключения как обработка ошибок в отражении  (FTM)* P3560R2 16
std::define_static_object, std::define_static_array, std::define_static_string  (FTM)* P3491R3 16
std::simd::basic_vec и std::simd::basic_mask являются типами диапазонов P3480R6 16
std::optional<T&>  (FTM)*  (FTM)* P2988R12
P3836R2
16 22
std::string::subview() и std::string_view::subview()  (FTM)* P3044R2 16 22
constexpr std::shared_ptr и компания  (FTM)* P3037R6
Типы корутинных задач  (FTM)* P3552R3
P3980R1
P3927R2
P3941R4
P4151R1
Асинхронные области: создание областей для непоследовательного параллелизма  (FTM)* P3149R11
P3815R1
Параллельный планировщик  (FTM)* P2079R10
P3804R2
Высококачественная диагностика отправителей с constexpr исключениями P3557R3
execution::write_env и execution::unstoppable адаптеры отправителей P3284R4
std::views::indices  (FTM)* P3060R3 16
Параллельные алгоритмы диапазонов  (FTM)* P3179R9
P3709R2
Атомарные минимум/максимум для чисел с плавающей запятой  (FTM)* P3008R6
Атомарные операции редукции  (FTM)* P3111R8
Операции перестановки SIMD  (FTM)* P2664R11
std::mdspan::at() P3383R3 16
std::exception_ptr_cast()  (FTM)* P2927R3
P3748R0
P3981R2
16 (неполная)*
Стандартизованное constexpr упорядочение типов  (FTM)* P2830R10
P3778R0
P4140R0
16
std::constant_wrapper  (FTM)* P2781R9
P3978R3
16 23
Изменения std::apply: std::apply_result, std::is_applicable и std::is_nothrow_applicable  (FTM)* P1317R2
Приведение к единообразию использования стирающих тип аллокаторов в std::promise и std::packaged_task P3503R3 19.51*
std::filesystem::path::display_string() и std::filesystem::path::native_encoded_string()  (FTM)* P2319R5
Уменьшение неожиданности std::istream::ignore() P3223R2 16 19.50*
DR11: Устранены несоответствия в begin/end для std::valarray и std::initializer_list  (FTM)*  (FTM)* P3016R6 19.51*
Исправления std::flat_meow  (FTM)*  (FTM)* P3567R2 22 19.51*
Обеспечение возможности использования std::integer_sequence в структурированных привязках и операторах развёртывания  (FTM)* P1789R3 16 22
constexpr текстовое форматирование  (FTM)* P3391R2
std::start_lifetime  (FTM)* P3726R2
std::is_structural: типовая характеристика для обнаружения структурных типов  (FTM)* P3856R8 16
std::constant_wrapper используется как аргумент конструктора std::function_ref P3948R1 16
Поддержка signed char и unsigned char в генерации случайных чисел P4037R1
Обнаружение возможности замены обработчика нарушений контрактов, определённой реализацией, с помощью макроса проверки возможностей

( FTM)*

P3886R0 16
DR20: Сделать пользовательские конструкторы итераторов/стражей представлений закрытыми P3059R2 Да
DR20: Расширения представлений-фильтров для более безопасного использования  (FTM)* P3725R3 16
 

Возможность C++26
 

Документ(ы)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

* - наведите указатель на ячейку, отмеченную звездочкой *, чтобы увидеть дополнительные всплывающие подсказки.
DRnn - число nn после "DR" обозначает целевую версию C++, к которой применяется отчет об ошибке, например, DR20 → C++20.

Внешние ссылки

1.  C++26 — Википедия