Spec-Zone.ru › C++

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

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

Основные возможности языка C++26

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

Документ(ы)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ранее 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 6.9
Удаление устаревшего арифметического преобразования перечислений P2864R2 14 18
DR11/20: Инициализация параметров шаблона P2308R1 9 18
Запрет привязки возвращаемой ссылки к временному объекту P2748R5 14 19
Атрибуты для структурных привязок (FTM)* P0609R3 15 19
Ошибочное поведение при чтении неинициализированных данных, атрибут [[indeterminate]] P2795R5
P3684R1
16 6.8 (частично)
= delete("reason"); (FTM)* P2573R2 15 19
Вариативные дружественные функции (FTM)* P2893R3 15 20
DR98: Уточнение правил опускания фигурных скобок при агрегатной инициализации P3106R1 Да 17
DR20: Запрет объявления модулей в виде макросов P3034R1 15
DR11: Тривиальные бесконечные циклы не являются неопределённым поведением P2809R3 14 19
Constexpr-размещение new (FTM)* P2747R2 15 20
Объявление структурной привязки в качестве условия (FTM)* P0963R3 15 6 (частично)*
21
Упорядочение ограничений, включающих свёрточные выражения (FTM)* P2963R3 19
Удаление указателя на неполный тип должно быть некорректным P3144R2 15 19 6.7
Структурные привязки могут вводить пакет (FTM)* P1061R10 16 21 6.9
Constexpr-структурные привязки и ссылки на constexpr-переменные P2686R5 16* 22 (частично)* 6.7
Constexpr-исключения (FTM)* P3068R6 16
Оксфордская вариативная запятая P3176R1 15 20
Удаление устаревших сравнений массивов P2865R6 15 20
#embed (FTM)* P1967R14 15 19* 6.8
Параметры шаблона для концептов и переменных-шаблонов (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 6.9
Приведение к const выражений splice в контрактных утверждениях P3598R0


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


Документ(ы)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ранее 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 16
<rcu>: чтение-копирование-обновление (FTM)* P2545R4
<hazard_pointer>: защищённые указатели (FTM)* P2530R3
std::projected, устойчивый к ADL 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 года для отношений: std::quecto, std::ronto, std::ronna и std::quetta (FTM)* P2734R0 14 17*
std::function_ref: ссылка на вызываемый объект со стёртым типом (FTM)* P0792R14
P3961R1
16 24
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
16*
<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*
Удаление устаревшего псевдонима типа 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 вместо универсальных ссылок 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 (частично)*
Дополненные макетами компоновки 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*
Удаление устаревших потоков strstream P2867R2 19
Удаление устаревших API атомарного доступа std::shared_ptr P2869R4
Удаление std::wstring_convert P2872R3 19
DR23: Разрешение эффективной реализации std::print (FTM)* P3107R5
P3235R3
16 19.43*
Константное выражение размещение 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
16 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*
Константные выражения для std::atomic и std::atomic_ref (FTM)* P3309R3
Алгоритмы специализированного управления памятью в константных выражениях (алгоритмы неинициализированной памяти) (FTM)* P3508R0
P3369R0
15
<stdbit.h> и <stdckdint.h> (FTM)* (FTM)* P3370R1 15*
16
<simd>: типы для обработки данных векторными операциями (FTM)* P1928R15
P3430R3
P2876R3
P3691R1
P3922R1
P3690R1
P3932R0
P4012R1
16 (частично)*
Математические операции SIMD P1928R15
P3844R4
Средство для создания сред выполнения P3325R5
Типы исключений, допускающие использование в константных выражениях, например 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
Больше контейнеров и адаптеров, допускающих использование в константных выражениях
(FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)*
P3372R3 16 (частично)* 21 (частично)*
22 (частично)*
Константные выражения для 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
Атомарные операции min/max для чисел с плавающей точкой (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 17 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 24
Поддержка signedchar и unsignedchar при генерации случайных чисел P4037R1
Определение возможности замены обработчика нарушения контрактов, задаваемого реализацией, с помощью макроса

возможностей (FTM)*

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


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


Документ(ы)
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/26

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API