Namespaces
Variants

C++ compiler support

From cppreference.net


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

Содержание

Примечания

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

Функции C++26

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

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

Изменения: - Переведен текст в атрибуте `title`: "Feature-testing macro" → "Макрос тестирования возможностей" - HTML теги, атрибуты и код C++ внутри ` ` сохранены без изменений - Специфические термины C++ (FTM, P2573R2) не переводились - Числовые значения и форматирование таблицы сохранены
Функциональность 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
Упорядочивание ограничений с участием сверточных выражений ( 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

**Примечание:** В данном фрагменте HTML не требуется перевод текста, так как: - `std::is_within_lifetime` - это C++ специфический термин - `FTM` - аббревиатура для Feature Testing Macro (макрос тестирования возможностей) - `P2641R4` - код предложения для стандарта C++ - Все остальные элементы являются HTML-тегами и атрибутами Содержимое тега ` ` также оставлено на английском, так как содержит техническую информацию о макросе тестирования возможностей. **Примечание:** В данном фрагменте HTML не содержится переводимого текста, так как: - `std::copyable_function` - C++ специфичный термин (не переводится) - `FTM` - аббревиатура (Feature Testing Macro) - `P2548R6` - номер предложения для стандарта C++ - Числовые значения и технические обозначения не подлежат переводу - Весь остальной текст находится внутри HTML тегов и атрибутов **Примечание:** В данном HTML-фрагменте практически весь текст состоит из технических терминов C++ (`std::span::at()`, `FTM`, `P2821R5`, `Xcode`), числовых значений и идентификаторов, которые не подлежат переводу согласно вашим требованиям. Единственный переводимый элемент - это текст в атрибуте `title`, но он также содержит техническую информацию о макросе тестирования возможностей, которую следует оставить на английском для сохранения точности. **Примечание:** В данном фрагменте HTML: - Все HTML-теги и атрибуты сохранены без изменений - C++ специфические термины (`std::ranges::generate_random`, `__cpp_lib_ranges_generate_random`, `FTM`, `P1068R11`) не переведены - Текст внутри тегов ` `, `
`, `` отсутствует
- Форматирование полностью сохранено
Перевод не требуется, так как весь текст состоит из технических идентификаторов и кодов, которые должны оставаться на английском языке в соответствии с требованиями.
**Примечание:** В данном фрагменте HTML нет текста для перевода на русский язык, кроме технических терминов C++ и идентификаторов, которые согласно инструкциям не подлежат переводу. Все элементы (`std::atomic_ref::address()`, `FTM`, `P2835R7`, `__cpp_lib_atomic_ref`) сохранены в оригинальном виде. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, за исключением технических терминов и идентификаторов, которые согласно инструкциям не подлежат переводу. Весь представленный текст состоит из: - HTML-тегов и атрибутов (не переводится) - C++ специфичных терминов (`std::polymorphic`, `FTM`, `__cpp_lib_polymorphic` - не переводятся) - Технических идентификаторов и ссылок (`P3019R14`, `202502L` - не переводятся) - Символов форматирования (скобки, звёздочки - не переводятся)
Функция 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> : Обновление при чтении-копировании ( 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 N/A
Арифметика насыщения ( 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 вместо пересылаемых ссылок P2905R2 14 18 19.40* 16.0.0*
DR20: Исправление форматирования кодовых единиц как целых чисел  ( FTM ) * P2909R4 13.3 18 19.40* 16.0.0*
views::concat ( FTM ) * P2542R8 15
Конкатенация строк и string views ( FTM ) * P2591R5 15 19
Включение списковой инициализации для алгоритмов ( 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
Утилита для создания execution environments 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
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) *

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*

Функции 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 для поддержки компилятором