Namespaces
Variants

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

С ru.cppreference.net
< cpp


В следующих таблицах представлена поддержка компиляторами новых возможностей C++. Они включают принятые изменения стандарта, а также различные технические спецификации:

Примечания

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

Возможности C++29

Обратите внимание, что этот список может измениться по мере развития проекта стандарта C++29/2d.

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

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

 
Документ(ы)

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ранее PGI)*
Nvidia nvcc
Cray
#embed параметр смещения (offset)  (FTM)* P3540R3
Контракты (Contracts) для виртуальных функций  (FTM)* P3097R3
Индексация пакетов (Pack indexing) для шаблонов  (FTM)* P3670R4
Именованные инициализаторы (Designated initializers) для базовых классов  (FTM)* P2287R6
Функции освобождения памяти со спецификацией исключения throw являются некорректными 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++ (ранее PGI)*
Nvidia nvcc
Cray

Библиотечные возможности C++29

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

 
Документы

 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
Улучшенная функция поиска для контейнеров map  (FTM)* P3091R6
Тегирование указателей  (FTM)* P3125R6
Атрибуты потоков  (FTM)* P2019R9
Пакеты hazard-указателей  (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*

Функции C++26

Обратите внимание, что этот список может измениться по мере развития чернового стандарта C++26/2c.

Основные возможности языка 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 cast из 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 P3684R1
(
FTM
= delete("reason"); )**P2573R2 15 19 Вариативные
друзья ( FTM)*P2893R3 15 20 DR98: Уточнение правил пропуска скобок в
агрегатной инициализацииP3106R1 Да 17 DR20: Запрет объявлений модулей быть макросами
P3034R1 15 DR11: Тривиальные бесконечные циклы не являются неопределённым поведением
P2809R3 14 19 Constexpr
placement new ( FTM)*P2747R2 15 20 Объявление structured binding
как условие ( FTM)*P0963R3 15 6 (частично)*21
Упорядочение
ограничений, включающих свёрнутые выражения ( FTM)*P2963R3 19 Удаление
указателя на неполный тип должно быть некорректным P3144R2 15 19 6.7 Structured bindings
могут вводить пакет ( FTM)*P1061R10 16 21 Constexpr
structured bindings и ссылки на 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
Const-ification выражений сращивания в контрактных утверждениях P3598R0
 

Возможность 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 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 (partial)*
Расширение ассоциативных контейнеров оставшимися гетерогенными перегрузками  (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 (partial)*
Добавление новых префиксов СИ 2022 года для отношений: 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*
<отладка>: Поддержка отладки  (FTM)* P2546R5
P2810R4
16*
<linalg>: Свободный интерфейс линейной алгебры на основе BLAS  (FTM)* P1673R13
P3050R2
P3222R0
P3371R5
Сделать макрос assert() удобным для пользователя P2264R7 Yes*
Динамические строки формата  (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
Включение list-инициализации для алгоритмов  (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 (partial)*
Дополненные макеты 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
Удаление устаревших std::shared_ptr API атомарного доступа 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
16 22 (partial)*
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 Yes Yes 19.39* Yes
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 (partial)* 22 (partial)*
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
16 (partial)*
Математические операции SIMD P1928R15
P3844R4
Утилита для создания сред выполнения P3325R5
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 (partial)* 21 (partial)*
22 (partial)*
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 (partial)* 19.44* (partial)* 19.50* (partial)*
Автономная библиотека: <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 (partial)*
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 (partial)*
Стандартизированное 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) *
Приведение использования стирающего типа аллокатора в 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
Поддержка signed char и unsigned char в генерации случайных чисел P4037R1
Обнаружение заменяемости обработчика нарушения контракта, определённое реализацией, с помощью макроса возможностей-

обработчика нарушения контракта с помощью макроса возможностей  (FTM)*

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

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

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

Функции C++23

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

Функциональность C++23

Документ(ы)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Суффикс литерала для (знакового) size_t ( FTM ) * P0330R8 11 13 19.43* 13.1.6* 6.5 2022.2 23.9
Сделать () более опциональным для lambdas P1102R2 11 13 19.44* 13.1.6* 6.3 2022.2 22.5
if consteval ( FTM ) * P1938R3 12 14 19.44* 14.0.0* 6.3 2022.2 24.1
Удаление поддержки сборки мусора P2186R2 12 N/A 19.30* N/A N/A
Сужение контекстных преобразований в static_assert и constexpr if P1401R5 9 13 (частично)*
14
14.0.0* 2022.2 20.7
Удаление пробелов перед сращиванием строк P2223R2 Да Да Да 6.7 2022.2 Да
Сделать порядок объявлений обязательным для размещения P1847R4 Да Да Да Да 2022.2 Да
Удаление смешанной конкатенации широких строковых литералов concatenation P2201R1 Да Да Да Да Да Да Да
Явные объектные функции-члены (выведение this )  ( FTM ) * P0847R7 14 18
19*
19.32*
(частично)*
19.43*
6.3 22.5
auto(x) и auto{x} ( FTM ) * P0849R8 12 15 14.0.3* 6.4 2022.2 23.3
#elifdef и #elifndef P2334R1 12 13 19.40* 13.1.6* 6.5 2022.2 23.9
Нелитеральные переменные (а также метки и операторы goto) в constexpr функциях  ( FTM ) * P2242R3 12 15 19.43* 14.0.3* 6.3 2022.2 22.5
Единообразное кодирование символьных литералов P2316R2 Да Да 19.30* Да Да 2022.2 Да
Наборы символов и кодировки P2314R4 10 Да Да Да 2022.2 Да
Расширить инициализирующее-выражение (в for цикле ) для разрешения объявления-псевдонима P2360R0 12 14 14.0.0* 2022.2
Многомерный оператор индексации ( FTM ) * P2128R6 12 15 19.42* 14.0.3* 2022.2
Атрибуты на лямбда-выражениях P2173R1 9 13 19.44* 13.1.6* 6.6 2022.2 22.5
#warning P2437R1 Да* Да 15.0.0* 6.5 2023.2 Да
Удаление некодируемых литералов широких символов и многобайтовых литералов широких символов P2362R3 13 14 15.0.0* 6.7 2023.2
Метки в конце составных операторов P2324R2 13 16 16.0.0* 6.5 2023.2 23.9
Разделенные escape-последовательности P2290R3 13 15 15.0.0* 6.7 2023.2
Именованные универсальные символьные escape-последовательности ( FTM ) * P2071R2 13 15 15.0.0* 6.7 2023.2
Ослабление некоторых constexpr ограничений  ( FTM ) * P2448R2 13 17 (частично)
19
2024.0 (частично)
Упрощённый неявный перенос  ( FTM ) * P2266R3 13 13 6.7 2022.2
static operator ( ) ( FTM ) * P1169R4 13 16 19.44* 16.0.0* 6.7 2023.2
Требования для опциональных extended floating-point types P1467R9 13 N/A 6.4
Вывод аргументов шаблона класса из унаследованных конструкторов P2582R1 14
Атрибут [[ assume ]] P1774R8 13 19
Поддержка UTF-8 в качестве переносимой кодировки исходных файлов P2295R6 13* 15* 19.0 (Update 2)* * 15.0.0* 2023.2
static operator [ ] ( FTM ) * P2589R1 13 16 19.44* 16.0.0* 6.7 2023.2
Разрешение static constexpr переменных в constexpr функциях  ( FTM ) * P2647R1 13 16 16.0.0* 2023.2
Расширение времени жизни временных объектов в инициализаторе range-based for цикла  ( FTM ) * P2644R1
P2718R0
CWG2659
15 19
Объявления и где их найти P1787R6
DR11: Изменение области видимости lambda trailing-return-type P2036R3
P2579R0
17 2023.2
DR20: Осмысленные экспорты P2615R1 15 17 (частично)
DR20: consteval должен распространяться вверх ( FTM ) * P2564R3 14 17 16.0.0* 6.7 2024.0
DR98: Синтаксис идентификаторов C++ с использованием стандарта Unicode Annex 31 P1949R7 12 14 14.0.0* 6.4 2022.2
DR11: Разрешить дублирование атрибутов P2156R1 11 13 13.1.6* 6.5 23.9
DR20: Корректировка значения макроса тестирования возможностей __cpp_concepts P2493R0 12 19.32* 6.4 23.3
DR98: Ослабление требований к wchar_t для соответствия существующей практике P2460R2 Да Да Да 15.0.0* Н/П 2023.2
DR11: Использование неизвестных указателей и ссылок в константных выражениях P2280R4 14 20 *
DR20: Оператор равенства, который вы ищете P2468R2 13 16 16.0.0* 2023.2
DR20: char8_t Исправление совместимости и портируемости  ( FTM ) * P2513R4 13 16 19.34* 16.0.0* 2023.2
DR98/11: Уточнение отчетности диагностических директив и разрешение static_assert для не зависящих от значения выражений в контексте шаблона CWG2518 13 17 16.0*
(частично)*
19.40*


Функциональность C++23


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

Функции библиотеки C++23

**Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Все HTML-теги и атрибуты должны оставаться без изменений - Текст внутри тегов `` содержит C++ специфичные термины (``), которые не переводятся - Остальной текст состоит из технических обозначений (FTM, P0943R6), номеров версий и символов, которые не подлежат переводу - Заголовки в атрибутах `title` содержат техническую информацию на английском языке **Примечание:** В данном HTML-фрагменте не содержится переводимого текста, требующего перевода на русский язык. Все элементы представляют собой: - HTML-теги и атрибуты - C++ код и термины (`constexpr`, `type_info::operator==()`) - Технические идентификаторы и макросы - Номера версий и стандартные обозначения - Ссылки и заголовки **Примечания по переводу:** - HTML-теги и атрибуты сохранены без изменений - Текст внутри тегов ``, `` не переведен, так как содержит C++ специфичные термины и код - Макросы, названия функций и технические обозначения оставлены на английском - Форматирование и структура таблицы полностью сохранены **Примечание:** В данном HTML-фрагменте не содержится переводимого текста, так как: - Все элементы содержат только технические идентификаторы, названия функций C++ и версии компиляторов - HTML-теги и атрибуты сохранены без изменений - C++ специфические термины (`basic_string::resize_and_overwrite()`, `FTM`, `P1072R10`) не переведены - Числовые значения версий оставлены в оригинале **Примечание:** В данном HTML-фрагменте отсутствует переводимый текст, требующий перевода на русский язык. Все элементы содержат либо технические идентификаторы, названия стандартов C++, макросы тестирования возможностей, версии компиляторов, либо уже представлены в виде кодов и чисел. Согласно вашим требованиям, HTML-теги, атрибуты и C++ специфические термины не подлежат переводу. **Примечание**: В данном HTML-фрагменте не содержится переводимого текста, так как: - Все HTML-теги и атрибуты должны оставаться без изменений - Текст внутри тегов `` содержит C++ специфичные термины (`std::unreachable()`), которые не переводятся - Остальной текст состоит из технических обозначений (FTM, P0627R6), номеров версий и символов, которые не требуют перевода - Атрибут `title` содержит техническую информацию на английском, которая также не переводится согласно требованиям **Примечание:** В данном HTML-фрагменте отсутствует переводимый текст, требующий перевода на русский язык. Все элементы содержат либо HTML-теги, атрибуты, технические обозначения (FTM, P0429R9), числовые значения, либо C++ специфичные термины (``, `__cpp_lib_flat_map`), которые согласно инструкциям не подлежат переводу. **Примечание:** В данном HTML-фрагменте практически весь текст состоит из: - HTML тегов и атрибутов (не подлежат переводу) - C++ специфических терминов (``, `FTM`, `P1222R4`, `__cpp_lib_flat_set`) - Чисел (15, 21) - Символов (скобки, звездочка) Согласно вашим требованиям, переводу подлежит только текст в атрибуте `title`, но он также содержит C++ специфические термины, которые не должны переводиться. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Все элементы содержат только технические термины C++ (`views::stride`, `FTM`, `P1899R3`, номера версий) - Числовые значения и коды не подлежат переводу - HTML-теги и атрибуты сохранены без изменений - Специфические термины C++ оставлены на английском языке **Примечание:** В данном HTML-фрагменте не содержится переводимого текста, так как: - Все идентификаторы, названия функций (`views::cartesian_product`) и технические термины (`FTM`, `P2374R4`, `P2540R1`) не подлежат переводу согласно требованиям - Числовые значения и версии не требуют перевода - HTML-теги и атрибуты сохранены в оригинале - Вся техническая информация на английском языке оставлена без изменений **Примечание:** В данном HTML-фрагменте отсутствует переводимый текст - все содержимое состоит из: - HTML тегов и атрибутов (не подлежат переводу) - C++ специфических терминов (`basic_string::substr()` - не переводится) - Кода внутри `` тегов (`&&` - не переводится) - Технических идентификаторов (P2438R2) - Версий компиляторов и номеров (16, 19.34*, 15.0.0*) - Атрибутов title (содержат техническую информацию) Поэтому перевод не требуется, исходный текст сохранен без изменений. **Примечание**: В данном HTML-фрагменте не содержится переводимого текста, так как: - `std::forward_like()` - C++ специфический термин (не переводится) - `FTM` - аббревиатура (Feature-testing macro) - `P2445R1` - идентификатор предложения для C++ - Числовые версии и даты не подлежат переводу - Все остальные элементы являются HTML-тегами и атрибутами **Примечание:** В данном HTML-фрагменте отсутствует переводимый текст, требующий перевода на русский язык. Все элементы содержат либо технические термины C++ (`views::enumerate`, `FTM`, `P2164R9`, номера версий), либо HTML-теги и атрибуты, которые не подлежат переводу согласно инструкциям.
Функция C++23

Документ(ы)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
Библиотека Stacktrace ( FTM ) * P0881R7
P2301R1
12 (частично)*
14*
19.34*
<stdatomic.h> ( FTM ) * P0943R6 12 15 19.31* 14.0.3*
std::is_scoped_enum ( FTM ) * P1048R1 11 12 19.30* 13.0.0*
std::basic_string::contains() , std::basic_string_view::contains() ( FTM ) * P1679R3 11 12 19.30* 13.0.0*
std::to_underlying ( FTM ) * P1682R3 11 13 19.30* 13.1.6*
Ослабление требований для time_point<>::clock P2212R2 N/A N/A N/A N/A
Предоставление обратной связи о размере в интерфейсе Allocator  ( FTM ) * P0401R6 15 19.30* 14.0.3*
<spanstream> : строковый поток с буфером на основе std::span  ( FTM ) * P0448R4 12 19.31*
std::out_ptr() , std::inout_ptr() ( FTM ) * P1132R8 14 19 19.30*
constexpr type_info::operator==() ( FTM ) * P1328R1 12 17 19.33* *
19.34*
15.0.0*
Конструкторы с парой итераторов для std::stack и std::queue ( FTM ) * P1425R4 12 14 19.31* 14.0.3*
Контекст без вывода для аллокаторов в направляющих вывода контейнеров P1518R2 12 * 13 * 19.31* * 13.1.6* *
ranges::starts_with() и ranges::ends_with() ( FTM ) * P1659R3 17 (частично)*
18
19.31* 16.0.0*
Запрет std::basic_string и std::basic_string_view конструирования из nullptr P2166R1 12 13 19.30* 13.1.6*
std::invoke_r() ( FTM ) * P2136R3 12 17 19.31* 15.0.0*
Конструктор диапазона constructor для std::basic_string_view P1989R2 11 14 19.30* 14.0.3*
Аргументы по умолчанию шаблона для std::pair пересылающего конструктора P1951R1 14 14 19.30* 14.0.3*
Удаление сборки мусора и обнаружения утечек на основе достижимости ( library support ) P2186R2 12 14 19.30* 14.0.3*
zip: views::zip , views::zip_transform , views::adjacent , и views::adjacent_transform ( FTM ) * P2321R2 13 15 (частично)* 19.33* (частично)* * *
19.37*
14.0.3*
Перегрузки гетерогенного удаления для ассоциативных контейнеров  ( FTM ) * P2077R3 19.32*
std::byteswap() ( FTM ) * P1272R4 12 14 19.31* 14.0.3*
Вывод volatile T * P1147R1 11.3 14 19.31* 14.0.3*
basic_string::resize_and_overwrite() ( FTM ) * P1072R10 12 14 19.31* 14.0.3*
Монические операции для std::optional ( FTM ) * P0798R8 12 14 19.32* 14.0.3*
std::move_only_function ( FTM ) * P0288R9 12 19.32*
Добавить условную спецификацию noexcept к std::exchange P2401R0 12 14 19.25* 14.0.3*
Требовать, чтобы std::span и std::basic_string_view были TriviallyCopyable P2251R1 Да Да Да Да
Уточнение статуса «C заголовков» P2340R1 Да Да Да Да
<expected> ( FTM ) * P0323R12
P2549R1
12 16 19.33* 15.0.0*
constexpr для <cmath> и <cstdlib> ( FTM ) * P0533R9 4.6 (частично)*
std::unreachable() ( FTM ) * P0627R6 12 15 19.32* 14.0.3*
Устаревание std::aligned_storage и std::aligned_union P1413R3 13 16 19.33*
std::reference_constructs_from_temporary & std::reference_converts_from_temporary ( FTM ) * P2255R2 13 (частично)*
14
21 (частично)*
constexpr std::unique_ptr ( FTM ) * P2273R3 12 16 19.33* 15.0.0*
Конструирование контейнеров и строк из диапазонов с помощью ranges::to() , тегированных конструкторов, методов вставки и присваивания ( FTM ) * ( FTM ) * P1206R7 14 (частично)*
15
17 19.34* 15.0.0*
Поддержка конвейера для пользовательских адаптеров диапазонов ( ranges::range_adaptor_closure , std::bind_back )  ( FTM ) * ( FTM ) * P2387R3 13 (частично)*
14
19 19.34*
ranges::iota() , ranges::shift_left() , и ranges::shift_right() ( FTM ) * ( FTM ) * P2440R1 13 (частично)* 19.34*
views::join_with ( FTM ) * P2441R2 13 19.34*
views::chunk и views::slide ( FTM ) * ( FTM ) * P2442R1 13 19.33*
views::chunk_by ( FTM ) * P2443R1 13 18 19.33* 16.0.0*
std::mdspan : невладеющая многомерная ссылка на массив  ( FTM ) * P0009R18
P2599R2
P2604R0
P2613R1
P2763R1
17 (частично)*
18
19.39* 15.0.0*
<flat_map> ( FTM ) * P0429R9 15 20
<flat_set> ( FTM ) * P1222R4 15 21
ranges::find_last() , ranges::find_last_if() , и ranges::find_last_if_not() ( FTM ) * P1223R5 13 19 19.36*
Автономная библиотека: Легкий уровень <utility> , <ranges> , и <iterator> P1642R11 13 * N/A
views::stride ( FTM ) * P1899R3 13 19.34*
Совместимость между std::tuple и tuple-like объектами  ( FTM ) * P2165R4 14 2.9 (частично)* 19.36* (частично) *
19.37*
частично*
Исправление константных итераторов, стражей и диапазонов. views:: as_const ( FTM ) * P2278R4 13 19.35* (частично)*
19.36*
Форматирование Диапазонов  ( FTM ) * P2286R8 15 (частично)*
15.2
16 19.37* (частично)*
19.39* (частично)*
19.41* (частично)*
19.42*
15.0.0*
Улучшить форматирование контейнеров по умолчанию formatting ( FTM ) * P2585R1 15 16 (частично)*
17
19.42* 15.0.0*
Библиотека форматированного вывода <print> ( FTM ) * P2093R14
P2539R4
14 17 (частично)*
18
19.37* 15.0.0* *
16.0.0*
Форматирование std::thread::id и std::stacktrace ( FTM ) * P2693R1 14 17 (частично)* 19.38* 15.0.0*
constexpr для целочисленных перегрузок std::to_chars() и std::from_chars() ( FTM ) * P2291R3 13 16 19.34* 15.0.0*
ranges::contains() и ranges::contains_subrange() ( FTM ) * P2302R4 13 18 (частично)*
19
19.34* 16.0.0* *
Алгоритмы свертки диапазонов ( FTM ) * P2322R6 13 19.35*
views::cartesian_product ( FTM ) * P2374R4
P2540R1
13 19.37*
Добавление поддержки move-only типов для концепций сравнения ( equality_comparable , totally_ordered , three_way_comparable )  ( FTM ) * P2404R3 19.36*
Итераторы диапазонов в качестве входных данных для алгоритмов, не работающих с диапазонами  ( FTM ) * P2408R5 19.34*
constexpr std::bitset ( FTM ) * P2417R2 13 16 19.34* 15.0.0*
basic_string::substr() && P2438R2 16 19.34* 15.0.0*
views::as_rvalue ( FTM ) * P2446R2 13 16 19.34* 15.0.0*
Модули стандартной библиотеки  ( FTM ) * P2465R3 15* 17 (частично)* 19.35*
(частично)*
19.36*
std::forward_like() ( FTM ) * P2445R1 14 16 19.34* 15.0.0*
Поддержка эксклюзивного режима для std::fstream ( FTM ) * P2467R1 12 18 19.36* 16.0.0*
views::repeat ( FTM ) * P2474R2 13 17 19.36* 15.0.0*
Ослабление адаптеров диапазонов для поддержки перемещаемых типов  ( FTM ) * P2494R2 14 17 19.34* 15.0.0*
std::basic_string_view конструктор диапазона constructor должен быть явным P2499R0 12.2 16 19.34* 15.0.0*
std::generator : синхронный генератор корутин для диапазонов  ( FTM ) * P2502R2
P2787R0
14 19.43*
Добавить условную спецификацию noexcept к std::apply P2517R1 10 18 19.34* 16.0.0*
Явное управление временем жизни ( std::start_lifetime_as )  ( FTM ) * P2590R2
P2679R2
Уточнение обработки кодировок при локализованном форматировании chrono типов  ( FTM ) * P2419R2 15* 19.34* *
std::move_iterator не всегда должен быть input_iterator ( FTM ) * P2520R0 12.3* 17* 19.34* * 15.0.0*
Руководства по выводу обновлены для явных объектных параметров операторов вызова LWG3617 14 19.34*
Обновление правил вывода для static operator ( ) P1169R4 13 16 19.39* 15.0.0*
Стандартные имена и поддержка в библиотеке для расширенных типов с плавающей запятой P1467R9 13 19.37* *
Монические операции для std::expected ( FTM ) * P2505R5 13 17 19.36* 15.0.0*
views::enumerate ( FTM ) * P2164R9 13 19.37*
std::is_implicit_lifetime ( FTM ) * P2674R1 20
std::common_reference_t для std::reference_wrapper должен быть ссылочным типом  ( FTM ) * ( FTM ) * P2655R3 19.37*
Запрет пользовательской специализации std::allocator_traits P2652R2 19 19.37*
Устаревание std::numeric_limits::has_denorm P2614R2 18 19.37* 16.0.0*
Создание многопараметрических конструкторов view s explicit P2711R1 17 (частично)* 19.36* * 15.0.0*
DR20: Немного Ослабляя Ranges  ( FTM ) * P2609R3 15 20 19.37*
DR20: Сохранение итераторов с кэшированием для корректного выравнивания P2770R0 14 18 19.37*
DR17: std::visit() для классов, производных от std::variant ( FTM ) * P2162R2 11.3 13 19.20* *
19.30*
13.1.6*
DR20: Условно заимствованные диапазоны P2017R1 11 16 19.30*
DR20: Исправление адаптеров диапазонов ввода и std::counted_iterator P2259R1 12 19.30* (частично)*
19.31*
DR20: views::join должен объединять все представления диапазонов P2328R1 11.2 15 19.30* 14.0.3*
DR20: view не требует default_initializable ( FTM ) * P2325R3 11.3 16 19.30* 15.0.0*
DR20: Объекты адаптеров диапазонов связывают аргументы по значению P2281R1 11 14 19.29 (16.10)*
(частично)*
19.31*
14.0.3*
DR20: constexpr для std::optional и std::variant ( FTM ) * ( FTM ) * P2231R1 11.3 (частично)*
12
13 (частично)*
19
19.31* 13.1.6* (частично)
DR20: views::lazy_split и переработанный views::split P2210R2 12 16 19.31* 15.0.0*
DR20: Исправление ranges::istream_view P2432R1 12 16 19.31* 15.0.0*
DR20: view с владением  ( FTM ) * P2415R2 12 14 19.31* 14.0.3*
DR20: Исправление обработки локалей в форматтерах chrono  ( FTM ) * P2372R3
P2418R2
13 19.31*
DR20: Очистка целочисленных классов типов P2393R1 19.32*
DR20: Проверки строк форматирования на этапе компиляции; Уменьшение размера бинарного кода для std::format() семейства  ( FTM ) * P2216R3 13 14 (частично)*
15
19.32* 14.0.3*
DR20: Добавление поддержки типов, не являющихся константно-форматируемыми, в std::format P2418R2 13 15 19.32* 14.0.3*
DR20: std::basic_format_string P2508R1 13 15 19.35* 14.0.3*
DR20: Отравляющие Пилюли Слишком Токсичны  ( FTM ) * P2602R2 14 19 19.36*
DR20: std::format разрешения для символа заполнения P2572R1 14 17 19.37*
DR20: Улучшение std::format оценки ширины P2675R1 14 17 19.38*
DR20: std::barrier гарантии завершения фазы  ( FTM ) * P2588R3 19.28 (16.8)* *
19.36*


Функция C++23


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

Возможности C++20

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

**Примечание:** В данном HTML-фрагменте переводить нечего, так как: - Все текстовые элементы являются либо C++ терминами ("init-statements for range-based for"), которые не подлежат переводу - Либо это кодовые обозначения и версии (P0614R1, номера версий компиляторов) - HTML теги и атрибуты сохраняются без изменений - Внутри тегов нет переводимого текста
Функциональность C++20

Документ(ы)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Разрешить Захват в лямбда-выражениях [ = , this ] P0409R2 8 6 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
__VA_OPT__ P0306R4
P1042R1
8 (частично)*
10 (частично)*
12
9 19.25* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Инициализаторы с указанием членов ( FTM ) * P0329R4 4.7 (частично)*
8
3.0 (частично)*
10
19.21* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
Список параметров шаблона для обобщенных лямбда-выражений ( FTM ) * P0428R2 8 9 19.22* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
Инициализаторы по умолчанию для битовых полей P0683R1 8 6 19.25* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
Конструкторы со списками инициализации в выводе аргументов шаблона класса P0702R1 8 6 19.14* Да 5.0 2021.1 20.7 12.0 11.0
const & -квалифицированные указатели на члены P0704R1 8 6 19.0 (2015)* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
Концепции ( FTM ) * P0734R0 5*
10
10 19.23* (частично)*
19.30*
12.0.0* (частично) 6.1 2023.1* 20.11 12.0 11.0
Лямбды в невычисляемых контекстах P0315R4 9 13 (частично)*
14 (частично)*
17
19.28 (16.8)* 13.1.6* (частично) 6.2 2023.1 (частично)
2024.0
20.7 12.0
Трехсторонний оператор сравнения   ( FTM ) * P0515R3 10 8 (частично)
10
19.20* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11: Упрощение неявного захвата лямбда-выражений P0588R1 8 19.24* 5.1 2021.1 20.7 12.0
init-statements for range-based for P0614R1 9 8 19.25* 11.0.0* 6.0 2021.7 20.11 12.0 11.0
Конструируемые по умолчанию и присваиваемые бессостоятельные lambdas P0624R2 9 8 19.22* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Несоответствие типов для специальных функций-членов по умолчанию P0641R2 9 (частично)* 8 19.0 (2015)* (частично)* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Проверка доступа для специализаций P0692R1 Да 8 (частично)
14
19.26* 14.0.0* 5.1 2021.1 20.7 12.0
ADL и шаблоны функций, которые не видны P0846R0 9 9 19.21* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
DR11: Определить, когда constexpr определения функций необходимы для константных вычислений ( FTM ) * P0859R0 5.2 (частично)*
9
8 19.27* (частично)*
19.31* *
11.0.0* (частично) 12.0 11.0
Атрибуты [[ likely ]] и [[ unlikely ]] P0479R5 9 12 19.26* 13.0.0* 5.1 2021.7 20.7 12.0
Сделать typename более опциональным P0634R3 9 16 19.29 (16.10)* 16.0.0* 5.1 2023.1 20.7 12.0
Pack-expansions в lambda init-captures ( FTM ) * P0780R2 9 9 19.22* 11.0.3* 6.1 2021.7 20.11 12.0 11.0
Атрибут [[ no_unique_address ]] P0840R2 9 9 19.28 (16.9)* * 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Условно тривиальные специальные функции-члены  ( FTM ) * P0848R3 10 16 19.28 (16.8)* 6.1 2021.7 20.11 12.0
DR17: Ослабление правил поиска точек настройки structured bindings P0961R1 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
DR11: Ослабление range-for правил поиска точек кастомизации цикла P0962R1 8 8 19.25* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
DR17: Разрешить структурные привязки к доступным членам P0969R0 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Разрушающий operator delete ( FTM ) * P0722R3 9 6 19.27* 10.0.0* 6.1 2023.1 20.11 12.0 11.0
Типы классов в Постоянные параметры шаблона P0732R2 9 12 (частично) 19.26* (частично)*
19.28 (16.9)*
13.0.0* (частично) 6.2 2023.1 (частично) 21.3 12.0
Устаревание неявного захвата указателя this через [=] P0806R2 9 7 19.22* 10.0.1* 5.1 20.7 12.0 11.0
explicit(bool) ( FTM ) * P0892R2 9 9 19.24* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Интеграция макросов проверки возможностей P0941R2 5 3.4 19.15* (частично)
19.20*
Да 5.0 2021.1 20.7 12.0 11.0
Запрет агрегатов с пользовательскими конструкторами P1008R1 9 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
constexpr виртуальная функция ( FTM ) * P1064R0 9 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Улучшения согласованности для сравнений P1120R0 10 8 (частично)
10
19.22* 12.0.0* 5.1 2023.1 20.7 12.0 11.0
char8_t ( FTM ) * P0482R6 9 7* 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
std::is_constant_evaluated() ( FTM ) * P0595R2 9 9 19.25* 11.0.3* 5.1 19.1 21.1 12.0 11.0
constexpr try - catch блоки P1002R1 9 8 19.25* 10.0.1* 5.1 2023.1 20.7 12.0 11.0
Непосредственные функции ( consteval )  ( FTM ) * P1073R3 10 (частично)*
11
11 (частично)
14 (частично)*
17
19.28 (16.8)*
(частично)*

19.29 (16.10)*
11.0.3* (частично)
15.0.0*
5.1 2021.1 20.7 12.0
Вложенные встроенные пространства имён P1094R2 9 8 19.27* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Еще один подход для constrained declarations P1141R2 10 10 19.26* (partial)
19.28 (16.9)*
12.0.5* 6.1 2023.1 20.11 12.0 11.0
Целочисленные типы со знаком используют дополнительный код P1236R1 9 9 Yes 11.0.3* N/A 2023.1* yes* 12.0 11.0
dynamic_cast и полиморфный typeid в константных выражениях P1327R1 10 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Изменение активного члена объединения внутри constexpr ( FTM ) * P1330R0 9 9 19.10* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Корутины ( FTM ) * ( FTM ) * P0912R5
LWG3393
10 8 (частично)
17 (частично)*
19.0 (2015)* (частично)
19.10* *
19.28 (16.8)*
10.0.1* (частично) 5.1 2021.1 23.3* 12.0 (только host code)
Инициализация агрегатов в круглых скобках initialization of aggregates ( FTM ) * P0960R3 10 16 19.28 (16.8)* 16.0.0* 5.1 2021.1 20.7 12.0
DR11: Вывод размера массива в new -выражениях P1009R2 11 9 19.27* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Модули ( FTM ) * P1103R3 11 (частично) 8 (частично) 19.0 (2015)* (частично)
19.10* *
19.28 (16.8)*
10.0.1* (частично) 2023.1 (частично)
Более строгие требования к Unicode P1041R4
P1139R2
10 Да 19.0 (2015)* *
19.26* *
Да Н/Д 2023.1* Да 12.0 11.0
<=> != == P1185R2 10 10 19.22* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11: Явно заданные по умолчанию функции с различными спецификациями исключений P1286R2 10 9 19.28 (16.8)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Захват в лямбдах и спецификаторы класса хранения структурированных привязок P1091R3
P1381R1
10 8 (частично)
16
19.11* *
19.24* *
16.0.0* 5.1 2021.1 20.7 12.0
Разрешить преобразования в массивы неизвестной границы P0388R4 10 14 19.27* 14.0.0* 6.0 2021.5 20.11 12.0
constexpr операции с контейнерами  ( FTM ) * P0784R7 10 10 19.28 (16.9)* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
Устаревание некоторых применений volatile P1152R4 10 10 19.27* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
constinit ( FTM ) * P1143R2 10 10 19.29 (16.10)* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Устаревание оператора запятой в индексах P1161R3 10 9 19.25* 11.0.3* 6.0 2021.7 20.11 12.0 11.0
[[ nodiscard ]] с сообщением P1301R4 10 9 19.25* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
Тривиальная инициализация по умолчанию в constexpr функциях P1331R2 10 10 19.27* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Невычисляемые asm -объявления в constexpr функциях P1668R1 10 10 19.28 (16.9)* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
using enum ( FTM ) * P1099R5 11 13 19.24* 13.1.6* 6.3 2023.1 22.5 12.0
Синтезирование Three-way comparison для указанной категории сравнения P1186R3 11 10 19.24* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
DR17: [[ nodiscard ]] для конструкторов P1771R1 10 9 19.24* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
вывод аргументов шаблона класса для псевдонимов шаблонов  ( FTM ) * P1814R0 10 19 19.27* 6.5 23.9 12.0
вывод аргументов шаблона класса для агрегатов  ( FTM ) * P1816R0
P2082R1
10*
11*
17 19.27* 6.3 2023.1 (частично)*
2024.1
23.3 12.0
DR11: Неявное перемещение для большего количества локальных объектов и rvalue-ссылок P1825R0 11* 13 19.24* 13.1.6* 6.0 2021.5 20.11 12.0
Разрешить сравнения по умолчанию по значению P1946R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Удалить std::weak_equality и std::strong_equality P1959R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Несоответствия с постоянными параметрами шаблонов  ( FTM ) * P1907R1 10 (частично)
11
18 (частично)* 19.26* 13.1.6* (частично) 6.2 2023.1 (частично) 21.3 12.0
DR98: Псевдодеструкторы завершают время жизни объектов P0593R6 11 11 Да 12.0.5* Н/П 2023.1* Да 12.0 11.0
DR11: Преобразование из T * в bool должно считаться сужающим P1957R2 10*
11*
11 19.27* 12.0.5* 6.1 12.0 11.0


Функциональность C++20


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

Функции библиотеки C++20

**Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Все HTML-теги и атрибуты должны оставаться без изменений - Текст внутри тегов `` содержит C++ специфичные термины (`std::span`), которые не подлежат переводу - Остальной текст состоит из технических обозначений (FTM, P0122R7), номеров версий и символов, которые не требуют перевода **Примечание:** В данном HTML-фрагменте отсутствует переводимый текст - все содержимое состоит из HTML-тегов, атрибутов, числовых значений версий и C++ специфичных терминов (``, `P0754R2`), которые согласно инструкциям не подлежат переводу. **Примечание:** В данном HTML-фрагменте не содержится переводимого текста, так как: - Все HTML-теги и атрибуты должны оставаться без изменений - Текст внутри тегов `` содержит C++ специфичные термины (`std::destroying_delete_t`), которые не переводятся - Аббревиатура `FTM` (Feature Testing Macro) является стандартным термином в C++ - Номера версий и коды (`P0722R3`, `201806L`) не подлежат переводу - Числовые значения версий компиляторов остаются без изменений **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Все HTML-теги и атрибуты должны оставаться без изменений - Текст внутри тегов `` содержит C++ специфичные термины (`std::bind_front()`), которые не подлежат переводу - Остальной текст состоит из технических обозначений (FTM, P0356R5) и номеров версий, которые также не переводятся - Атрибуты `title` содержат техническую информацию на английском языке Переведено только слово "in" → "в", все остальные элементы сохранены в оригинальном виде, включая: - HTML-теги и атрибуты - Текст внутри тегов ``, `
`, `` (хотя в данном фрагменте их нет)
- C++ специфические термины (`constexpr`, `std::pointer_traits`, `FTM`, `P1006R1`)
- Форматирование и структура таблицы
**Примечание:** В данном HTML-фрагменте не содержится переводимого текста, так как: - Все элементы содержат технические идентификаторы, названия функций C++ (`std::to_array()`), макросы (`FTM`, `__cpp_lib_to_array`), коды предложений (`P0325R4`) и номера версий - HTML-теги и атрибуты сохранены без изменений - Вся текстовая информация является техническими спецификациями, не требующими перевода
Функция C++20

Документ(ы)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
std::endian ( FTM ) * P0463R1 8 7 19.22* 10.0.0*
Расширение std::make_shared() для поддержки массивов  ( FTM ) * P0674R1 12 15 19.27* 14.0.3*
Атомарные операции с плавающей запятой ( FTM ) * P0020R6 10 18 19.22* 16.0.0*
Синхронизированная буферизация ( std::basic_osyncstream )  ( FTM ) * P0053R7 11 18 19.29 (16.10)*
constexpr для <algorithm> и <utility> ( FTM ) * P0202R3 10 8 (частично)
12
19.26* 10.0.1* (частично)
13.0.0*
Больше constexpr для <complex> ( FTM ) * P0415R1 9 7 (частично)
16
19.27* 10.0.0* (частично)
15.0.0*
Сделать std::memory_order перечислением с областью видимости P0439R0 9 9 19.25* 11.0.3*
Строка префикс и суффикс проверка: string (_view) ::starts_with / ends_with ( FTM ) * P0457R2 9 6 19.21* 10.0.0*
Поддержка в стандартной библиотеке для operator<=> <compare> ( FTM ) * P0768R1 10 7 (частично)
12 (частично)*
17
19.20* (частично)
19.28 (16.9)*
13.0.0*
std::remove_cvref ( FTM ) * P0550R2 9 6 19.20* 10.0.0*
[[ nodiscard ]] в стандартной библиотеке P0600R1 9 7 (частично)
16
19.13* (частично)
19.22*
10.0.0* (частично)
15.0.0*
Использование std::move в численных алгоритмах P0616R0 9 12 19.23* 13.0.0*
Утилита для преобразования указателя в сырой указатель  ( FTM ) * P0653R2 8 6 19.22* Да
Атомарные std::shared_ptr и std::weak_ptr ( FTM ) * P0718R2 12 19.27*
std::span ( FTM ) * P0122R7 10 7 19.26* 10.0.0*
Календарь и Часовой пояс ( FTM ) * P0355R7 11 (частично)*
13 (частично)*
14
7 (частично)
19 ( частично )*
19.29 (16.10)* 10.0.0* (частично)
<version> P0754R2 9 7 19.22* 10.0.0*
Сравнение неупорядоченных контейнеров P0809R0 Да Да 16.0* Да
ConstexprIterator требования  ( FTM ) * ( FTM ) * P0858R0 9 12 19.11* 13.0.0*
std::basic_string::reserve() не должна уменьшать емкость P0966R1 11 8 19.25* 10.0.1*
Атомарное сравнение-и-обмен с битами заполнения P0528R3 13 19.28 (16.8)*
std::atomic_ref ( FTM ) * P0019R8 10 19 19.28 (16.8)*
contains ( ) функция-член ассоциативных контейнеров, например std::map::contains() P0458R2 9 13 19.21* 13.1.6*
DR11: Гарантированное устранение копирования для поэлементного конструирования P0475R1 9 Да 19.29 (16.10)* Да
std::bit_cast() ( FTM ) * P0476R2 11 14 19.27* 14.0.3*
Операции со степенями двойки для целых чисел :

std::bit_ceil() , std::bit_floor() , std::bit_width() , std::has_single_bit() ( FTM ) *

P0556R3
P1956R1
9*
10*
9*
12*
19.25* *
19.27* *
19.28 (16.8)*
11.0.3* *
13.0.0* *
Улучшение возвращаемого значения алгоритмов стиля erase  ( FTM ) * P0646R1 9 10 19.21* 12.0.0*
std::destroying_delete_t ( FTM ) * P0722R3 9 9 19.27* 11.0.3*
std::is_convertible ( FTM ) * P0758R1 9 9 19.23* 11.0.3*
Добавить std::shift_left/right в <algorithm> ( FTM ) * P0769R2 10 12 19.21* 13.0.0*
Constexpr для std::swap() и связанных функций swap P0879R0 10 13 19.26* 13.1.6*
std::type_identity ( FTM ) * P0887R1 9 8 19.21* 10.0.1*
Библиотека концепций ( FTM ) * P0898R3 10 13 19.23* 13.1.6*
constexpr операторы сравнения для std::array P1023R0 10 8 19.27* 10.0.1*
std::unwrap_ref_decay и std::unwrap_reference ( FTM ) * P0318R1 9 8 19.21* 10.0.1*
std::bind_front() ( FTM ) * P0356R5 9 13 19.25* 13.1.6*
std::reference_wrapper для неполных типов P0357R3 9 8 19.26* 10.0.1*
Исправление operator>>(basic_istream&, CharT*) P0487R1 11 8 19.23* 10.0.1*
Поддержка в стандартной библиотеке для char8_t ( FTM ) * P0482R6 9 8 (частичная)
16
19.22* 10.0.1* (частичная)
15.0.0*
Утилитарные функции для реализации uses-allocator конструирования P0591R4 9 16 19.29 (16.10)* 15.0.0*
DR17: std::variant и std::optional должны распространять тривиальность копирования/перемещения P0602R4 8.3 8 19.11* 10.0.1*
DR17: Разумный std::variant преобразующий конструктор P0608R3 10 9 19.29 (16.10)* *
19.42* *
11.0.3*
std::function должен быть noexcept P0771R1 7.2 6 19.22* Да
Предложение Единых Диапазонов (Ranges) ( FTM ) * P0896R4 10 13 (частично)
15*
19.29 (16.10)* 14.0.3*
Гетерогенный поиск для unordered associative containers ( FTM ) * P0919R3
P1690R1
11 12 19.23* (P0919R3)
19.25* (P1690R1)
13.0.0*
<chrono> zero() , min() , и max() должны быть noexcept P0972R0 9 8 19.14* 10.0.1*
constexpr в std::pointer_traits ( FTM ) * P1006R1 9 8 19.26* 10.0.1*
std::assume_aligned() ( FTM ) * P1007R3 9*
11
15 19.28 (16.9)* 14.0.3*
Создание умных указателей с инициализацией по умолчанию (например, make_unique_for_overwrite )  ( FTM ) * P1020R1
P1973R1
11*
12*
16 19.28 (16.9)* 15.0.0*
Разное constexpr биты  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1032R1 10 13 19.28 (16.8)* 13.1.6*
Удаление операторов сравнения для std::span P1085R2 10 8 19.26* 10.0.1*
Сделать распространение stateful аллокаторов более согласованным для operator+(basic_string) P1165R1 10 15 19.26* 14.0.3*
Единообразное удаление элементов контейнера, например std::erase(std::vector) , или std::erase_if(std::map) ( FTM ) * P1209R0
P1115R3
9*
10*
8*
11*
19.25* *
19.27* *
10.0.1* *
12.0.5* *
Модули стандартной библиотеки P1502R1 11 19.29 (16.10)*
polymorphic_allocator<> как тип словаря  ( FTM ) * P0339R6 9 16 19.28 (16.9)* 15.0.0*
std::execution::unseq ( FTM ) * P1001R2 9 17 19.28 (16.8)*
std::lerp() и std::midpoint() ( FTM ) * P0811R3 9 9 19.23* (частично)
19.28 (16.8)*
11.0.3*
Улучшения удобства использования для std::span P1024R3 10 9*
14
19.26* 11.0.3*
DR17: Сделать std::create_directory() интуитивно понятной P1164R1 8.3 12 19.20* 13.0.0*
std::ssize() и беззнаковый размер для std::span ( FTM ) * P1227R2 10 9 19.25* 11.0.3*
Трейты для ( неограниченных ) ограниченных массивов  ( FTM ) * P1357R1 9 9 19.25* 11.0.3*
std::to_array() ( FTM ) * P0325R4 10 10 19.25* 12.0.0*
Эффективный доступ к буферу std::basic_stringbuf P0408R7 11 17 19.29 (16.10)* 15.0.0*
Трайты - совместимости по расположению и взаимопреобразуемости указателей  ( FTM ) * ( FTM ) * P0466R5 12 19.29 (16.10)* *
Битные операции : std ::

rotl() , rotr() , countl_zero() , countl_one() , countr_zero() , countr_one() , popcount() ( FTM ) *

P0553R4 9 9 19.25* *
19.28 (16.8)*
11.0.3*
Математические константы ( FTM ) * P0631R8 10 11 19.25* 12.0.5*
Форматирование текста ( FTM ) * P0645R10 13 14 * *
17
19.29 (16.10)* 15.0.0*
std::stop_token и std::jthread ( FTM ) * P0660R10 10 17
(частично)*

20*
19.28 (16.9)*
constexpr std::allocator и связанные утилиты  ( FTM ) * P0784R7 10 12 19.29 (16.10)* 13.0.0*
constexpr std::string ( FTM ) * P0426R1
P1032R1
P0980R1
12 15 19.29 (16.10)*
19.30* *
14.0.3*
constexpr std::vector ( FTM ) * P1004R2 12 15 19.29 (16.10)*
19.30* *
14.0.3*
Входной range адаптор P1035R7 10 16 19.29 (16.10)* 15.0.0*
constexpr std::invoke() и связанные утилиты P1065R2 10 12 19.28 (16.8)* 13.0.0*
Атомарное ожидание и уведомление, std::counting_semaphore , std::latch и std::barrier ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1135R6 11 11 19.28 (16.9)* 13.1.6*
std::source_location ( FTM ) * P1208R6 11 15*
(частично)
16
19.29 (16.10)* 15.0.0*
Добавление <=> в стандартную библиотеку P1614R2 10 14*
(частично)
17*
(частично)
19
19.29 (16.10)* 13.1.6* (частично)
constexpr конструктор по умолчанию для std::atomic и std::atomic_flag ( FTM ) * P0883R2 10 13 19.26* 13.1.6*
constexpr для численных алгоритмов ( FTM ) * P1645R1 10 12 19.26* 13.0.0*
Безопасные сравнения целых чисел ( FTM ) * P0586R2 10 13 19.27* 13.1.6*


Функция C++20


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

Стандарты предыдущих версий

Смотрите также

Тестирование возможностей (C++20) Набор препроцессорных макросов для проверки соответствующих возможностей языка C++ и библиотек
Документация по C для поддержки компилятором