Namespaces
Variants

C++ compiler support

From cppreference.net


Las siguientes tablas presentan el soporte del compilador para nuevas características de C++. Estas incluyen revisiones aceptadas del estándar, así como varias especificaciones técnicas:

Contenidos

Notas

* - pase el cursor sobre una celda marcada con el asterisco * para ver notas emergentes adicionales.
DR nn - el número nn después de "DR" denota la revisión de C++ objetivo a la que se aplica el Informe de Defectos, por ejemplo, DR20 → C++20.

Características de C++26

Tenga en cuenta que esta lista puede cambiar, a medida que evoluciona el borrador del estándar C++26/2c.

Características principales del lenguaje C++26

**Nota:** En este caso, el texto visible en la página web ya está en inglés y consiste principalmente en términos técnicos de C++ que no deben traducirse según las instrucciones proporcionadas. Los únicos elementos que podrían traducirse ("friends" y "Feature-testing macro") son términos técnicos específicos de C++ que deben mantenerse en inglés para mantener la precisión técnica.
Característica de C++26

Documento(s)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
DR98: Eliminación del comportamiento indefinido del análisis léxico P2621R3 3.3 16.0.0*
DR98: Hacer que los literales de cadena no codificables sean incorrectos P1854R4 14 14 16.0.0*
Cadenas no evaluadas P2361R6 14 17 (parcial)*
18
16.0.0*
Agregar @ , $ , y ` al conjunto de caracteres básico P2558R2 15 16.0.0*
constexpr conversión desde void * ( FTM ) * P2738R1 14 17
DR20: Sobre la ignorabilidad de los atributos estándar P2552R3 15
DR11: Almacenamiento estático para inicializadores entre llaves P2752R3 14
Mensajes generados por el usuario static_assert ( FTM ) * P2741R3 14 17
Variables de marcador de posición sin nombre ( FTM ) * P2169R4 14 18
Indexación de paquetes ( FTM ) * P2662R3 15 19
Eliminación de conversiones aritméticas obsoletas en enumeraciones P2864R2 14 18
DR11/20: Inicialización de parámetros de plantilla P2308R1 9 18
Prohibir enlazar una referencia devuelta a un temporary P2748R5 14 19
Atributos para structured bindings ( FTM ) * P0609R3 15 19
Comportamiento erróneo para lecturas no inicializadas , [[ indeterminate ]] atributo P2795R5
= delete ( "reason" ) ; ( FTM ) * P2573R2 15 19
Variadic friends ( FTM ) * P2893R3 15 20
DR98: Aclaración de reglas para la omisión de llaves en aggregate initialization P3106R1 17
DR20: Prohibir que las declaraciones de módulos sean macros P3034R1 15
DR11: Los bucles infinitos triviales no son comportamiento indefinido P2809R3 14 19
constexpr placement new ( FTM ) * ( FTM ) * P2747R2 15 20
Declaración de enlace estructurado como condición  ( FTM ) * P0963R3 15 6 (parcial)*
21
Ordenamiento de restricciones que involucran expresiones de plegado ( FTM ) * P2963R3 19
Eliminar un puntero a un tipo incompleto debería ser incorrecto P3144R2 15 19 6.7
Enlaces estructurados pueden introducir un pack ( FTM ) * P1061R10 21
constexpr enlaces estructurados y referencias a variables constexpr P2686R5 6.7
constexpr excepciones : [1] , [2] ( FTM ) * P3068R6
Coma variádica de Oxford P3176R1 15 20
Eliminación de comparaciones de arrays obsoletas P2865R6 15 20
#embed ( FTM ) * P1967R14 15 19 *
Parámetros de plantilla de concepto y variable-template  ( FTM ) * P2841R7
Trivial relocatability ( FTM ) * P2786R13 21 *
Uniones triviales  ( FTM ) * P3074R7
Puntos de control observables P1494R5
Contratos ( FTM ) * P2900R14


Característica de C++26


Documento(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

Características de la biblioteca C++26

**Notas sobre la traducción:** - Se preservaron todos los tags HTML y atributos - No se tradujeron los términos técnicos de C++ (`mdspan`, `__cpp_lib_submdspan`, `P2642R6`) - Se mantuvo el formato original y los espacios - Se tradujo "Padded mdspan layouts" como "Diseños de mdspan con relleno" - Se tradujo "Feature-testing macro" como "Macro de prueba de características" - Se mantuvo "FTM" sin traducción por ser un acrónimo técnico **Cambios realizados:** - "Feature-testing macro" se tradujo como "Macro de prueba de características" - Se mantuvieron todos los términos técnicos de C++ (`std::indirect`, `__cpp_lib_indirect`, `202502L`, `P3019R14`) - Se preservaron todas las etiquetas HTML y atributos - No se tradujo el texto dentro de los elementos de enlace y spans técnicos - Se mantuvo el formato y estructura original
Característica de C++26

Documento(s)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
Prueba de éxito o fallo de <charconv> funciones  ( FTM ) * P2497R0 14 18 16.0.0*
std::text_encoding : identificación de codificaciones de texto  ( FTM ) * P1885R12
P2862R1
14
Sobrecargas aritméticas de std::to_string y std::to_wstring utilizan std::format ( FTM ) * P2587R3 14
Verificación de tipos en argumentos de formato  ( FTM ) * P2757R3 15
Formateo de punteros  ( FTM ) * P2510R3 14 * 17 * 19.40* *
Soporte de hashing para las clases de valor de std::chrono ( FTM ) * P2592R3
<rcu> : Read-Copy Update ( FTM ) * P2545R4
<hazard_pointer> : Punteros de peligro ( FTM ) * P2530R3
A prueba de ADL std::projected P2538R1 14 * 18 * 19.38* * 16.0.0*
constexpr ordenación estable  ( FTM ) * P2562R1 15 21
Miembro std::basic_format_arg::visit() ( FTM ) * P2637R3 15 19
Miembro std::variant::visit() ( FTM ) * P2637R3 15 18
std::is_within_lifetime ( FTM ) * P2641R4
Extender los contenedores asociativos con las sobrecargas heterogéneas restantes  ( FTM ) * P2363R5
Habilitar el uso de std::weak_ptr como claves en contenedores asociativos desordenados  ( FTM ) * P1901R2
Manejadores nativos en flujos de archivos  ( FTM ) * P1759R6 14 18 16.0.0*
Interfaz de flujos de cadena con std::string_view ( FTM ) * P2495R3 19
Interfaz entre std::bitset y std::string_view ( FTM ) * P2697R1 18 16.0.0*
Más constexpr para <cmath> y <complex> ( FTM ) * ( FTM ) * P1383R2 4.6 (parcial)*
Adición de los nuevos prefijos SI de 2022 para ratios: std::quecto , std::ronto , std::ronna , y std::quetta ( FTM ) * P2734R0 14 17 *
std::function_ref : referencia invocable con borrado de tipo  ( FTM ) * P0792R14
std::copyable_function ( FTM ) * P2548R6 16
std::bind_front , std::bind_back , y std::not_fn para callables NTTP  ( FTM ) * ( FTM ) * ( FTM ) * P2714R1
std::submdspan() ( MFP ) * P2630R4
P3355R1
Lenguaje independiente: Opcional ::operator new P2013R5 N/A
Independiente std::char_traits , std::errc y facilidades en: <charconv> , <cstdlib> , <cstring> , <cwchar> ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2338R4 N/A
Más facilidades independientes  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2198R7 N/A
Aritmética de saturación ( FTM ) * P0543R3 14 18 16.0.0*
<debugging> : Soporte de depuración ( FTM ) * P2546R5
P2810R4
<linalg> : Una interfaz de álgebra lineal basada en funciones libres fundamentada en BLAS ( FTM ) * P1673R13
P3050R2
P3222R0
Hacer la macro assert() más amigable para el usuario P2264R7
Cadenas de formato en tiempo de ejecución  ( FTM ) * P2918R2 14 18 16.0.0*
std::span sobre una lista de inicialización  ( FTM ) * P2447R6 15 18 16.0.0*
std::span::at() ( FTM ) * P2821R5 14 18 16.0.0*
Se añadió el protocolo de tupla a std::complex ( FTM ) * P2819R2 15 19
Una nueva especificación para std::generate_canonical P0952R2 19.42*
Eliminando el typedef obsoleto std::allocator::is_always_equal P2868R3 15 18 16.0.0*
Eliminación de la sobrecarga de función de std::basic_string::reserve() que no toma argumentos P2870R3 18 16.0.0*
Eliminación de facetas de conversión Unicode obsoletas ( <codecvt> ) P2871R3 18 16.0.0*
Independiente: eliminando std::strtok ( FTM ) * P2937R0 14 19.40*
Biblioteca independiente: clases parciales  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2407R5 14 19.42*
Biblioteca independiente: std::inout , std::expected , std::span ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2833R2 14 19.42*
DR23: std::basic_const_iterator debería seguir la convertibilidad de su tipo subyacente ( FTM ) * P2836R1
P2950R0
14 19.40*
DR20: std::make_format_args ahora acepta únicamente referencias a lvalue en lugar de referencias de reenvío P2905R2 14 18 19.40* 16.0.0*
DR20: Corregir el formato de unidades de código como enteros  ( FTM ) * P2909R4 13.3 18 19.40* 16.0.0*
views::concat ( FTM ) * P2542R8 15
Concatenación de strings y string views ( FTM ) * P2591R5 15 19
Habilitar la inicialización de lista para algoritmos ( FTM ) * P2248R8
P3217R0
15
std::ranges::generate_random ( FTM ) * P1068R11
Comparaciones para std::reference_wrapper , y restricciones para comparaciones de std::pair , std::tuple , std::optional , y std::variant ( FTM ) * ( FTM ) * P2944R3 14 19 (parcial) *
Diseños de mdspan con relleno  ( FTM ) * P2642R6
Nueva CTAD para std::span y std::mdspan con constantes integrales P3029R1 19
Máximo y mínimo atómicos  ( FTM ) * P0493R5
std::formatter<std::filesystem::path> ( FTM ) * P2845R8
Imprimir Líneas en Blanco con std::println() ( FTM ) * P3142R0 14 * 19 * 19.41* *
Quitar la deprecación de std::polymorphic_allocator::destroy P2875R4 15 19.41*
Eliminación de strstreams obsoletos P2867R2 19
Eliminación de las API obsoletas de acceso atómico para std::shared_ptr P2869R4
Eliminando std::wstring_convert P2872R3 19
DR23: Permitir una implementación eficiente de std::print ( FTM ) * P3107R5
P3235R3
19.43*
Biblioteca de control de ejecución ( FTM ) * P2300R10
P3396R0
std::inplace_vector : vector redimensionable dinámicamente con capacidad fija  ( FTM ) * P0843R14
std::philox_engine : motor de números aleatorios basado en contador  ( FTM ) * P2075R6
std::optional soporte de rango  ( FTM ) * P3168R2
std::is_virtual_base_of : rasgo de tipo para detectar clases base virtuales  ( FTM ) * P2985R0 15 20
std::dims para std::mdspan ( FTM ) * P2389R2 19
DR11: Especificación formal del tipo de std::ignore P2968R2 15 19 19.42*
DR20: Eliminar el requisito de referencia común de los conceptos invocables indirectamente  ( FTM ) * P2997R1 15 19 19.42*
Desaprobando std::is_trivial y std::is_trivial_v P3247R2 15 21
DR20: Objetos de función de algoritmos P3136R1 14 19.39* 14.0.3*
std::ranges::cache_latest_view ( FTM ) * P3138R5 15
Restringiendo std::expected operadores de igualdad ( FTM ) * P3379R0 15
std::aligned_accessor : un std::mdspan accessor que expresa sobrealineación de puntero  ( FTM ) * P2897R7 21
std::is_sufficiently_aligned : verifica la precondición de alineación de un puntero  ( FTM ) * P2897R7 21
std::atomic_ref::address() ( FTM ) * P2835R7
DR11/20: Tipos con calificadores cv en std::atomic y std::atomic_ref P3323R1 19.44*
constexpr std::atomic y std::atomic_ref ( FTM ) * P3309R3
constexpr para algoritmos de memoria especializados ( FTM ) * P3508R0
P3369R0
15
<stdbit.h> y <stdckdint.h> P3370R1 15
<simd> : tipos de datos paralelos ( FTM ) * ( FTM ) * P1928R15
P3430R3
P3441R2
P3287R3
P2663R7
P2933R4
Una utilidad para crear entornos de ejecución P3325R5
constexpr para tipos de excepción, p.ej. std::bad_alloc , std::bad_cast etc.  ( FTM ) * P3068R6
P3378R2
Rasgos y operaciones de reubicación trivial  ( FTM ) * P2786R13
Desactivar y desaprobar std::memory_order::consume P3475R1
Colocar std::monostate en <utility> P0472R3 15 21 19.50*
std::indirect ( FTM ) * P3019R14
std::polymorphic ( FTM ) * P3019R14
Más constexpr para contenedores y adaptadores de contenedores:

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 , y std::unordered_multiset
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) *

P3372R3
constexpr std::inplace_vector para tipos no triviales  ( FTM ) * P3074R7
std::ranges::to_input_view ( FTM ) * P3137R3 15
std::ranges::approximately_sized_range y std::ranges::reserve_hint ( FTM ) * P2846R6
<hive> : Un contenedor basado en cubos que reutiliza ubicaciones de memoria de elementos eliminados  ( FTM ) * P0447R28
<contracts> : Soporte para manejo de violaciones de contrato  ( FTM ) * P2900R14
Fortalecimiento de la biblioteca estándar  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P3471R4 15 (parcial)* 19.44* (parcial)*
Biblioteca independiente: <algorithm> , <numeric> , <random> , ( <execution> , <memory> )
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) *
P2976R1
DR20: Conversión de iteradores contiguos a punteros P3349R0 15


Característica de C++26


Documento(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

Características de C++23

Características principales del lenguaje C++23

Característica de C++23

Documento(s)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Sufijo literal para (con signo) size_t ( FTM ) * P0330R8 11 13 19.43* 13.1.6* 6.5 2022.2 23.9
Hacer () más opcional para 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
Eliminación del Soporte de Recolección de Basura P2186R2 12 N/A 19.30* N/A N/A
Conversiones contextuales restrictivas en static_assert y constexpr if P1401R5 9 13 (parcial)*
14
14.0.0* 2022.2 20.7
Recorte de espacios en blanco antes del empalme de líneas P2223R2 6.7 2022.2
Hacer que el orden de declaración del diseño sea obligatorio P1847R4 2022.2
Eliminación de la concatenación de literales de cadena anchos mixtos concatenation P2201R1
Funciones miembro de objeto explícito (deducción de this )  ( FTM ) * P0847R7 14 18
19*
19.32*
(parcial)*
19.43*
6.3 22.5
auto(x) y auto{x} ( FTM ) * P0849R8 12 15 14.0.3* 6.4 2022.2 23.3
#elifdef y #elifndef P2334R1 12 13 19.40* 13.1.6* 6.5 2022.2 23.9
Variables no literales (y etiquetas y gotos) en funciones constexpr ( FTM ) * P2242R3 12 15 19.43* 14.0.3* 6.3 2022.2 22.5
Codificación consistente de literales de caracteres P2316R2 19.30* 2022.2
Conjuntos de caracteres y codificaciones P2314R4 10 2022.2
Extender la init-statement (del for bucle ) para permitir alias-declaration P2360R0 12 14 14.0.0* 2022.2
Operador de subíndice multidimensional ( FTM ) * P2128R6 12 15 19.42* 14.0.3* 2022.2
Atributos en lambdas P2173R1 9 13 19.44* 13.1.6* 6.6 2022.2 22.5
#warning P2437R1 Sí* 15.0.0* 6.5 2023.2
Eliminar literales de caracteres anchos no codificables y literales de caracteres anchos multibyte P2362R3 13 14 15.0.0* 6.7 2023.2
Etiquetas al final de sentencias compuestas P2324R2 13 16 16.0.0* 6.5 2023.2 23.9
Secuencias de escape delimitadas P2290R3 13 15 15.0.0* 6.7 2023.2
Secuencias de escape de caracteres universales con nombre ( FTM ) * P2071R2 13 15 15.0.0* 6.7 2023.2
Relajando algunas constexpr restricciones  ( FTM ) * P2448R2 13 17 (parcial)
19
2024.0 (parcial)
Movimiento implícito más simple  ( FTM ) * P2266R3 13 13 6.7 2022.2
static operator ( ) ( FTM ) * P1169R4 13 16 19.44* 16.0.0* 6.7 2023.2
Requisitos para los tipos extended floating-point opcionales P1467R9 13 N/A 6.4
Deducción de argumentos de plantilla de clase a partir de constructores heredados P2582R1 14
Atributo [[ assume ]] P1774R8 13 19
Soporte para UTF-8 como codificación portable de archivos fuente 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
Permitir static constexpr variables en constexpr functions  ( FTM ) * P2647R1 13 16 16.0.0* 2023.2
Extensión del tiempo de vida de temporales en el inicializador de bucles for basados en rangos  ( FTM ) * P2644R1
P2718R0
CWG2659
15 19
Declaraciones y dónde encontrarlas P1787R6
DR11: Cambiar el alcance del lambda trailing-return-type P2036R3
P2579R0
17 2023.2
DR20: Exportaciones significativas P2615R1 15 17 (parcial)
DR20: consteval necesita propagarse hacia arriba ( FTM ) * P2564R3 14 17 16.0.0* 6.7 2024.0
DR98: Sintaxis de Identificadores C++ usando el Anexo 31 del Estándar Unicode P1949R7 12 14 14.0.0* 6.4 2022.2
DR11: Permitir atributos duplicados attributes P2156R1 11 13 13.1.6* 6.5 23.9
DR20: Ajustando el valor de la macro de prueba de características __cpp_concepts P2493R0 12 19.32* 6.4 23.3
DR98: Relajar requisitos en wchar_t para coincidir con prácticas existentes P2460R2 15.0.0* N/A 2023.2
DR11: Uso de punteros y referencias desconocidos en expresiones constantes P2280R4 14 20 *
DR20: El Operador de Igualdad Que Estás Buscando P2468R2 13 16 16.0.0* 2023.2
DR20: char8_t Corrección de Compatibilidad y Portabilidad  ( FTM ) * P2513R4 13 16 19.34* 16.0.0* 2023.2
DR98/11: Aclarar el reporte de directivas de diagnóstico y permitir static_assert de expresiones no dependientes de valor en un contexto de plantilla CWG2518 13 17 16.0*
(parcial)*
19.40*


Característica de C++23


Documento(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

Características de la biblioteca C++23

**Cambios realizados:** - "Feature-testing macro" → "Macro de prueba de características" - Se mantuvieron todos los términos C++ (`std::move_only_function`, `FTM`, `__cpp_lib_move_only_function`) - Se preservaron todas las etiquetas HTML y atributos - No se tradujo el contenido dentro de ` ` (que contiene código C++) **Cambios realizados:** - Traducido "Feature-testing macro" a "Macro de prueba de características" en el atributo `title` - Se preservaron todos los tags HTML, atributos y formato original - No se tradujo el texto dentro de ` ` (views::join_with) - No se tradujeron términos específicos de C++ como FTM - Se mantuvo el texto en inglés donde correspondía según las instrucciones **Cambios realizados:** - Traducido "Feature-testing macro" a "Macro de prueba de características" en el atributo `title` - Se preservaron todos los tags HTML, atributos y valores numéricos - No se tradujeron los términos C++ (`constexpr`, `std::bitset`, `FTM`, `__cpp_lib_constexpr_bitset`) - Se mantuvo el formato original y la estructura de la tabla **Nota:** En este caso específico, no había texto traducible en el contenido HTML proporcionado. Todos los elementos son: - Etiquetas y atributos HTML (no se traducen) - Código C++ (`basic_string::substr()`, `&&`) (no se traducen) - Referencias técnicas (`P2438R2`) (no se traducen) - Números de versión y valores numéricos (no requieren traducción) El documento ya está listo para uso en español manteniendo todos los términos técnicos en su forma original. **Cambios realizados:** - Traducido "Feature-testing macro" a "Macro de prueba de características" en el atributo `title` - Se preservaron todos los términos técnicos de C++ (`views::as_rvalue`, `__cpp_lib_ranges_as_rvalue`, `FTM`) - Se mantuvieron intactos todos los tags HTML, atributos y valores numéricos - No se tradujo el texto dentro de los elementos ` ` (término técnico de C++) **Cambios realizados:** - Traducido "Feature-testing macro:" a "Macro de prueba de características:" - Se mantuvieron todos los tags HTML, atributos y contenido dentro de ` `, `
`, ``
- Se preservaron los términos específicos de C++ como `views::enumerate`, `FTM`, `__cpp_lib_ranges_enumerate`
- Se mantuvo el formato original y estructura del HTML
Característica de C++23

Documento(s)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
Biblioteca de Stacktrace ( FTM ) * P0881R7
P2301R1
12 (parcial)*
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*
Relajando requisitos para time_point<>::clock P2212R2 N/A N/A N/A N/A
Proporcionar retroalimentación de tamaño en la interfaz Allocator  ( FTM ) * P0401R6 15 19.30* 14.0.3*
<spanstream> : flujo de cadena con búfer basado en std::span ( FTM ) * P0448R4 12 19.31*
std::out_ptr() , std::inout_ptr() ( MFT ) * P1132R8 14 19 19.30*
constexpr type_info::operator==() ( FTM ) * P1328R1 12 17 19.33* *
19.34*
15.0.0*
Constructores de par de iteradores para std::stack y std::queue ( FTM ) * P1425R4 12 14 19.31* 14.0.3*
Contexto de no deducción para asignadores en guías de deducción de contenedores P1518R2 12 * 13 * 19.31* * 13.1.6* *
ranges::starts_with() y ranges::ends_with() ( FTM ) * P1659R3 17 (parcial)*
18
19.31* 16.0.0*
Prohibición de la construcción de std::basic_string y std::basic_string_view desde nullptr P2166R1 12 13 19.30* 13.1.6*
std::invoke_r() ( FTM ) * P2136R3 12 17 19.31* 15.0.0*
Constructor de rango constructor para std::basic_string_view P1989R2 11 14 19.30* 14.0.3*
Argumentos de plantilla predeterminados para el std::pair constructor de reenvío de constructor P1951R1 14 14 19.30* 14.0.3*
Eliminar Recolección de Basura y Detección de Fugas Basada en Alcanzabilidad ( soporte de biblioteca ) P2186R2 12 14 19.30* 14.0.3*
zip: views::zip , views::zip_transform , views::adjacent , y views::adjacent_transform ( FTM ) * P2321R2 13 15 (parcial)* 19.33* (parcial)* * *
19.37*
14.0.3*
Sobrecargas de borrado heterogéneo para contenedores asociativos  ( FTM ) * P2077R3 19.32*
std::byteswap() ( FTM ) * P1272R4 12 14 19.31* 14.0.3*
Impresión 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*
Operaciones monádicas para std::optional ( FTM ) * P0798R8 12 14 19.32* 14.0.3*
std::move_only_function ( FTM ) * P0288R9 12 19.32*
Agregar una especificación condicional noexcept a std::exchange P2401R0 12 14 19.25* 14.0.3*
Requerir que std::span y std::basic_string_view sean TriviallyCopyable P2251R1
Aclarando el estado de los "C headers" P2340R1
<expected> ( FTM ) * P0323R12
P2549R1
12 16 19.33* 15.0.0*
constexpr para <cmath> y <cstdlib> ( FTM ) * P0533R9 4.6 (parcial)*
std::unreachable() ( FTM ) * P0627R6 12 15 19.32* 14.0.3*
Desaprobando std::aligned_storage y std::aligned_union P1413R3 13 16 19.33*
std::reference_constructs_from_temporary & std::reference_converts_from_temporary ( FTM ) * P2255R2 13 (parcial)*
14
21 (parcial)*
constexpr std::unique_ptr ( FTM ) * P2273R3 12 16 19.33* 15.0.0*
Construcción de contenedores y cadenas desde rangos con ranges::to() , constructores etiquetados, funciones miembro de inserción y asignación  ( FTM ) * ( FTM ) * P1206R7 14 (parcial)*
15
17 19.34* 15.0.0*
Soporte de tubería para adaptadores de rango definidos por el usuario ( ranges::range_adaptor_closure , std::bind_back )  ( FTM ) * ( FTM ) * P2387R3 13 (parcial)*
14
19 19.34*
ranges::iota() , ranges::shift_left() , y ranges::shift_right() ( FTM ) * ( FTM ) * P2440R1 13 (parcial)* 19.34*
views::join_with ( FTM ) * P2441R2 13 19.34*
views::chunk y views::slide ( FTM ) * ( FTM ) * P2442R1 13 19.33*
views::chunk_by ( FTM ) * P2443R1 13 18 19.33* 16.0.0*
std::mdspan : una referencia de arreglo multidimensional no propietaria  ( FTM ) * P0009R18
P2599R2
P2604R0
P2613R1
P2763R1
17 (parcial)*
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() , y ranges::find_last_if_not() ( FTM ) * P1223R5 13 19 19.36*
Biblioteca Independiente: Fácil <utility> , <ranges> , y <iterator> P1642R11 13 * N/A
views::stride ( FTM ) * P1899R3 13 19.34*
Compatibilidad entre std::tuple y objetos tipo tupla  ( FTM ) * P2165R4 14 2.9 (parcial)* 19.36* (parcial) *
19.37*
parcial*
Rectificación de iteradores constantes, centinelas y rangos. views:: as_const ( FTM ) * P2278R4 13 19.35* (parcial)*
19.36*
Formateo de Rangos  ( FTM ) * P2286R8 15 (parcial)*
15.2
16 19.37* (parcial)*
19.39* (parcial)*
19.41* (parcial)*
19.42*
15.0.0*
Mejorar el formato predeterminado de contenedores formatting ( FTM ) * P2585R1 15 16 (parcial)*
17
19.42* 15.0.0*
Biblioteca de salida formateada <print> ( FTM ) * P2093R14
P2539R4
14 17 (parcial)*
18
19.37* 15.0.0* *
16.0.0*
Formateo std::thread::id y std::stacktrace ( FTM ) * P2693R1 14 17 (parcial)* 19.38* 15.0.0*
constexpr para las sobrecargas integrales de std::to_chars() y std::from_chars() ( FTM ) * P2291R3 13 16 19.34* 15.0.0*
ranges::contains() y ranges::contains_subrange() ( FTM ) * P2302R4 13 18 (parcial)*
19
19.34* 16.0.0* *
Algoritmos de plegado de rangos ( FTM ) * P2322R6 13 19.35*
views::cartesian_product ( FTM ) * P2374R4
P2540R1
13 19.37*
Agregar soporte para tipos de solo movimiento a los conceptos de comparación ( equality_comparable , totally_ordered , three_way_comparable )  ( FTM ) * P2404R3 19.36*
Iteradores de rangos como entradas a algoritmos no ranges  ( 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*
Módulos de la Biblioteca Estándar  ( FTM ) * P2465R3 15* 17 (parcial)* 19.35*
(parcial)*
19.36*
std::forward_like() ( FTM ) * P2445R1 14 16 19.34* 15.0.0*
Soporte para modo exclusivo en std::fstream ( FTM ) * P2467R1 12 18 19.36* 16.0.0*
views::repeat ( FTM ) * P2474R2 13 17 19.36* 15.0.0*
Relajación de los adaptadores de rango para permitir tipos de solo movimiento  ( FTM ) * P2494R2 14 17 19.34* 15.0.0*
std::basic_string_view rango constructor debería ser explícito P2499R0 12.2 16 19.34* 15.0.0*
std::generator : generador síncrono de corrutinas para rangos  ( FTM ) * P2502R2
P2787R0
14 19.43*
Agregar una especificación condicional noexcept a std::apply P2517R1 10 18 19.34* 16.0.0*
Gestión explícita del tiempo de vida ( std::start_lifetime_as )  ( FTM ) * P2590R2
P2679R2
Aclarar el manejo de codificaciones en el formato localizado de tipos chrono  ( FTM ) * P2419R2 15* 19.34* *
std::move_iterator no siempre debería ser input_iterator ( FTM ) * P2520R0 12.3* 17* 19.34* * 15.0.0*
Guías de deducción actualizadas para operadores de llamada con parámetro de objeto explícito LWG3617 14 19.34*
Actualización de guías de deducción para static operator ( ) P1169R4 13 16 19.39* 15.0.0*
Nombres estándar y soporte de biblioteca para tipos de punto flotante extendidos P1467R9 13 19.37* *
Operaciones monádicas para 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 de std::reference_wrapper debería ser un tipo de referencia  ( FTM ) * ( FTM ) * P2655R3 19.37*
Prohibir la especialización por parte del usuario de std::allocator_traits P2652R2 19 19.37*
Desaprobando std::numeric_limits::has_denorm P2614R2 18 19.37* 16.0.0*
Hacer que los Constructores Multi-Parámetro de las view s explicit P2711R1 17 (parcial)* 19.36* * 15.0.0*
DR20: Relajando Ranges Solo un Poquito  ( FTM ) * P2609R3 15 20 19.37*
DR20: Almacenamiento de Iteradores de Almacenamiento Para un Aplanamiento Adecuado P2770R0 14 18 19.37*
DR17: std::visit() para clases derivadas de std::variant ( FTM ) * P2162R2 11.3 13 19.20* *
19.30*
13.1.6*
DR20: Rangos prestados condicionalmente P2017R1 11 16 19.30*
DR20: Reparación de adaptadores de rango de entrada y std::counted_iterator P2259R1 12 19.30* (parcial)*
19.31*
DR20: views::join debería unir todas las vistas de rangos P2328R1 11.2 15 19.30* 14.0.3*
DR20: view no requiere default_initializable ( FTM ) * P2325R3 11.3 16 19.30* 15.0.0*
DR20: Los objetos adaptadores de rango enlazan argumentos por valor P2281R1 11 14 19.29 (16.10)*
(parcial)*
19.31*
14.0.3*
DR20: constexpr para std::optional y std::variant ( FTM ) * ( FTM ) * P2231R1 11.3 (parcial)*
12
13 (parcial)*
19
19.31* 13.1.6* (parcial)
DR20: views::lazy_split y rediseñado views::split P2210R2 12 16 19.31* 15.0.0*
DR20: Corrección ranges::istream_view P2432R1 12 16 19.31* 15.0.0*
DR20: view con propiedad  ( FTM ) * P2415R2 12 14 19.31* 14.0.3*
DR20: Corrección del manejo de configuraciones regionales en formateadores chrono  ( FTM ) * P2372R3
P2418R2
13 19.31*
DR20: Limpieza de tipos de clase entera P2393R1 19.32*
DR20: Comprobaciones de cadenas de formato en tiempo de compilación; Reducción del tamaño del código binario de std::format() family  ( FTM ) * P2216R3 13 14 (parcial)*
15
19.32* 14.0.3*
DR20: Agregar soporte para tipos no constantes formateables a std::format P2418R2 13 15 19.32* 14.0.3*
DR20: std::basic_format_string P2508R1 13 15 19.35* 14.0.3*
DR20: Las Píldoras Venenosas son Demasiado Tóxicas  ( FTM ) * P2602R2 14 19 19.36*
DR20: std::format permisos de caracteres de relleno P2572R1 14 17 19.37*
DR20: Mejorando std::format 's estimación de ancho P2675R1 14 17 19.38*
DR20: std::barrier garantías de finalización de fase  ( FTM ) * P2588R3 19.28 (16.8)* *
19.36*


Característica de C++23


Documento(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

Características de C++20

Características principales del lenguaje C++20

Característica de C++20

Documento(s)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Permitir Captura de lambda [ = , this ] P0409R2 8 6 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
__VA_OPT__ P0306R4
P1042R1
8 (parcial)*
10 (parcial)*
12
9 19.25* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Inicializadores designados ( FTM ) * P0329R4 4.7 (parcial)*
8
3.0 (parcial)*
10
19.21* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
lista de parámetros de plantilla para lambdas genéricas ( FTM ) * P0428R2 8 9 19.22* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
Inicializadores de miembros predeterminados para campos de bits P0683R1 8 6 19.25* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
Constructores de lista de inicialización en deducción de argumentos de plantilla de clase P0702R1 8 6 19.14* 5.0 2021.1 20.7 12.0 11.0
const & Punteros a miembros calificados con const P0704R1 8 6 19.0 (2015)* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
Conceptos ( FTM ) * P0734R0 5*
10
10 19.23* (parcial)*
19.30*
12.0.0* (parcial) 6.1 2023.1* 20.11 12.0 11.0
Lambdas en contextos no evaluados P0315R4 9 13 (parcial)*
14 (parcial)*
17
19.28 (16.8)* 13.1.6* (parcial) 6.2 2023.1 (parcial)
2024.0
20.7 12.0
Operador de comparación de tres vías ( FTM ) * P0515R3 10 8 (parcial)
10
19.20* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11: Simplificación de la captura implícita de lambdas P0588R1 8 19.24* 5.1 2021.1 20.7 12.0
sentencias de inicialización para for basado en rangos P0614R1 9 8 19.25* 11.0.0* 6.0 2021.7 20.11 12.0 11.0
Lambdas sin estado construibles por defecto y asignables lambdas P0624R2 9 8 19.22* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Desajuste de tipos en funciones miembro especiales con valor por defecto P0641R2 9 (parcial)* 8 19.0 (2015)* (parcial)* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Verificación de acceso en especializaciones P0692R1 8 (parcial)
14
19.26* 14.0.0* 5.1 2021.1 20.7 12.0
ADL y plantillas de función que no son visibles P0846R0 9 9 19.21* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
DR11: Especificar cuándo las definiciones de funciones constexpr son necesarias para evaluación constante ( FTM ) * P0859R0 5.2 (parcial)*
9
8 19.27* (parcial)*
19.31* *
11.0.0* (parcial) 12.0 11.0
Atributos [[ likely ]] y [[ unlikely ]] P0479R5 9 12 19.26* 13.0.0* 5.1 2021.7 20.7 12.0
Hacer typename más opcional P0634R3 9 16 19.29 (16.10)* 16.0.0* 5.1 2023.1 20.7 12.0
Pack-expansions en lambda init-captures ( FTM ) * P0780R2 9 9 19.22* 11.0.3* 6.1 2021.7 20.11 12.0 11.0
Atributo [[ no_unique_address ]] P0840R2 9 9 19.28 (16.9)* * 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Funciones miembro especiales condicionalmente triviales  ( FTM ) * P0848R3 10 16 19.28 (16.8)* 6.1 2021.7 20.11 12.0
DR17: Relajando las structured bindings reglas de búsqueda del punto de personalización P0961R1 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
DR11: Relajando las range-for reglas de búsqueda del punto de personalización del bucle P0962R1 8 8 19.25* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
DR17: Permitir enlaces estructurados para miembros accesibles P0969R0 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Operador de eliminación destructor operator delete ( FTM ) * P0722R3 9 6 19.27* 10.0.0* 6.1 2023.1 20.11 12.0 11.0
Tipos de clase en Parámetros de plantilla constantes P0732R2 9 12 (parcial) 19.26* (parcial)*
19.28 (16.9)*
13.0.0* (parcial) 6.2 2023.1 (parcial) 21.3 12.0
Desaprobar la captura implícita de this mediante [=] 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
Integración de macros de prueba de características P0941R2 5 3.4 19.15* (parcial)
19.20*
5.0 2021.1 20.7 12.0 11.0
Prohibir agregados con constructores declarados por el usuario P1008R1 9 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
constexpr función virtual ( FTM ) * P1064R0 9 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Mejoras de consistencia para comparaciones P1120R0 10 8 (parcial)
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 bloques P1002R1 9 8 19.25* 10.0.1* 5.1 2023.1 20.7 12.0 11.0
Funciones inmediatas ( consteval )  ( FTM ) * P1073R3 10 (parcial)*
11
11 (parcial)
14 (parcial)*
17
19.28 (16.8)*
(parcial)*

19.29 (16.10)*
11.0.3* (parcial)
15.0.0*
5.1 2021.1 20.7 12.0
Espacios de nombres anidados en línea P1094R2 9 8 19.27* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Otro enfoque más para declaraciones restringidas P1141R2 10 10 19.26* (parcial)
19.28 (16.9)*
12.0.5* 6.1 2023.1 20.11 12.0 11.0
Los enteros con signo son complemento a dos P1236R1 9 9 11.0.3* N/A 2023.1* sí* 12.0 11.0
dynamic_cast y typeid polimórfico en expresiones constantes P1327R1 10 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Cambiar el miembro activo de una unión dentro de constexpr ( FTM ) * P1330R0 9 9 19.10* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Corrutinas ( FTM ) * ( FTM ) * P0912R5
LWG3393
10 8 (parcial)
17 (parcial)*
19.0 (2015)* (parcial)
19.10* *
19.28 (16.8)*
10.0.1* (parcial) 5.1 2021.1 23.3* 12.0 (solo código host)
Inicialización entre paréntesis de agregados ( FTM ) * P0960R3 10 16 19.28 (16.8)* 16.0.0* 5.1 2021.1 20.7 12.0
DR11: Deducción de tamaño de arreglo en new -expressions P1009R2 11 9 19.27* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Módulos ( FTM ) * P1103R3 11 (parcial) 8 (parcial) 19.0 (2015)* (parcial)
19.10* *
19.28 (16.8)*
10.0.1* (parcial) 2023.1 (parcial)
Requisitos Unicode más estrictos P1041R4
P1139R2
10 19.0 (2015)* *
19.26* *
N/A 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: Funciones explícitamente predeterminadas con diferentes especificaciones de excepción P1286R2 10 9 19.28 (16.8)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Captura de lambda y especificadores de clase de almacenamiento de enlaces estructurados P1091R3
P1381R1
10 8 (parcial)
16
19.11* *
19.24* *
16.0.0* 5.1 2021.1 20.7 12.0
Permitir conversiones a arrays de límite desconocido P0388R4 10 14 19.27* 14.0.0* 6.0 2021.5 20.11 12.0
constexpr operaciones de contenedor  ( FTM ) * P0784R7 10 10 19.28 (16.9)* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
Desaprobando algunos usos de 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
Desaprobar operador coma en subíndices P1161R3 10 9 19.25* 11.0.3* 6.0 2021.7 20.11 12.0 11.0
[[ nodiscard ]] con mensaje P1301R4 10 9 19.25* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
Inicialización trivial por defecto en funciones constexpr P1331R2 10 10 19.27* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Declaración asm no evaluada en funciones 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
Sintetizando Three-way comparison para categoría de comparación especificada P1186R3 11 10 19.24* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
DR17: [[ nodiscard ]] para constructores P1771R1 10 9 19.24* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
deducción de argumentos de plantilla de clase para plantillas de alias  ( FTM ) * P1814R0 10 19 19.27* 6.5 23.9 12.0
deducción de argumentos de plantilla de clase para agregados  ( FTM ) * P1816R0
P2082R1
10*
11*
17 19.27* 6.3 2023.1 (parcial)*
2024.1
23.3 12.0
DR11: Movimiento implícito para más objetos locales y referencias a rvalue P1825R0 11* 13 19.24* 13.1.6* 6.0 2021.5 20.11 12.0
Permitir la comparación por defecto por valor P1946R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Eliminar std::weak_equality y std::strong_equality P1959R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Inconsistencias con parámetros de plantilla constantes  ( FTM ) * P1907R1 10 (parcial)
11
18 (parcial)* 19.26* 13.1.6* (parcial) 6.2 2023.1 (parcial) 21.3 12.0
DR98: Los pseudo-destructores finalizan los tiempos de vida de los objetos P0593R6 11 11 12.0.5* N/A 2023.1* 12.0 11.0
DR11: La conversión de T * a bool debe considerarse como un estrechamiento P1957R2 10*
11*
11 19.27* 12.0.5* 6.1 12.0 11.0


Característica de C++20


Documento(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

Características de la biblioteca C++20

**Cambios realizados:** - Traducido "Feature-testing macro" a "Macro de prueba de características" en el atributo `title` - Se preservaron todos los tags HTML, atributos y valores numéricos - No se tradujo el texto dentro de ` ` (std::remove_cvref) - No se tradujeron los términos específicos de C++ (FTM, P0550R2) - Se mantuvo el formato original y la estructura HTML
Característica de C++20

Documento(s)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
std::endian ( FTM ) * P0463R1 8 7 19.22* 10.0.0*
Extender std::make_shared() para soportar arrays  ( FTM ) * P0674R1 12 15 19.27* 14.0.3*
Atómicos de punto flotante ( FTM ) * P0020R6 10 18 19.22* 16.0.0*
Búfer sincronizado ( std::basic_osyncstream )  ( FTM ) * P0053R7 11 18 19.29 (16.10)*
constexpr para <algorithm> y <utility> ( FTM ) * P0202R3 10 8 (parcial)
12
19.26* 10.0.1* (parcial)
13.0.0*
Más constexpr para <complex> ( FTM ) * P0415R1 9 7 (parcial)
16
19.27* 10.0.0* (parcial)
15.0.0*
Convertir std::memory_order en una enumeración con ámbito P0439R0 9 9 19.25* 11.0.3*
String prefix y suffix verificación: string (_view) ::starts_with / ends_with ( FTM ) * P0457R2 9 6 19.21* 10.0.0*
Soporte de biblioteca para operator<=> <compare> ( FTM ) * P0768R1 10 7 (parcial)
12 (parcial)*
17
19.20* (parcial)
19.28 (16.9)*
13.0.0*
std::remove_cvref ( FTM ) * P0550R2 9 6 19.20* 10.0.0*
[[ nodiscard ]] en la biblioteca estándar P0600R1 9 7 (parcial)
16
19.13* (parcial)
19.22*
10.0.0* (parcial)
15.0.0*
Usar std::move en algoritmos numéricos P0616R0 9 12 19.23* 13.0.0*
Utilidad para convertir un puntero a un puntero sin formato  ( FTM ) * P0653R2 8 6 19.22*
Atómicos std::shared_ptr y std::weak_ptr ( FTM ) * P0718R2 12 19.27*
std::span ( FTM ) * P0122R7 10 7 19.26* 10.0.0*
Calendario y Zona horaria ( FTM ) * P0355R7 11 (parcial)*
13 (parcial)*
14
7 (parcial)
19 ( parcial )*
19.29 (16.10)* 10.0.0* (parcial)
<version> P0754R2 9 7 19.22* 10.0.0*
Comparación de contenedores no ordenados P0809R0 16.0*
ConstexprIterator requisitos  ( FTM ) * ( FTM ) * P0858R0 9 12 19.11* 13.0.0*
std::basic_string::reserve() no debería reducir la capacidad P0966R1 11 8 19.25* 10.0.1*
Intercambio y Comparación Atómico con bits de relleno P0528R3 13 19.28 (16.8)*
std::atomic_ref ( FTM ) * P0019R8 10 19 19.28 (16.8)*
contains ( ) función miembro de contenedores asociativos, ej. std::map::contains() P0458R2 9 13 19.21* 13.1.6*
DR11: Eliminación de copia garantizada para construcción por partes P0475R1 9 19.29 (16.10)*
std::bit_cast() ( FTM ) * P0476R2 11 14 19.27* 14.0.3*
Operaciones de potencias de 2 enteras :

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* *
Mejora del valor de retorno de algoritmos tipo 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*
Agregar std::shift_left/right a <algorithm> ( FTM ) * P0769R2 10 12 19.21* 13.0.0*
Constexpr para std::swap() y funciones relacionadas con swap P0879R0 10 13 19.26* 13.1.6*
std::type_identity ( FTM ) * P0887R1 9 8 19.21* 10.0.1*
Biblioteca de conceptos ( FTM ) * P0898R3 10 13 19.23* 13.1.6*
constexpr operadores de comparación para std::array P1023R0 10 8 19.27* 10.0.1*
std::unwrap_ref_decay y 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 para tipos incompletos P0357R3 9 8 19.26* 10.0.1*
Corrigiendo operator>>(basic_istream&, CharT*) P0487R1 11 8 19.23* 10.0.1*
Soporte de biblioteca para char8_t ( FTM ) * P0482R6 9 8 (parcial)
16
19.22* 10.0.1* (parcial)
15.0.0*
Funciones de utilidad para implementar construcción uses-allocator construction P0591R4 9 16 19.29 (16.10)* 15.0.0*
DR17: std::variant y std::optional deberían propagar la trivialidad de copia/movimiento P0602R4 8.3 8 19.11* 10.0.1*
DR17: Un constructor de conversión sensato para std::variant P0608R3 10 9 19.29 (16.10)* *
19.42* *
11.0.3*
std::function El constructor de movimiento de noexcept debería ser P0771R1 7.2 6 19.22*
La Propuesta de Rangos Únicos ( FTM ) * P0896R4 10 13 (parcial)
15*
19.29 (16.10)* 14.0.3*
Búsqueda heterogénea para contenedores asociativos no ordenados ( FTM ) * P0919R3
P1690R1
11 12 19.23* (P0919R3)
19.25* (P1690R1)
13.0.0*
<chrono> zero() , min() , y max() deberían ser noexcept P0972R0 9 8 19.14* 10.0.1*
constexpr en 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*
Creación de punteros inteligentes con inicialización por defecto (ej. make_unique_for_overwrite )  ( FTM ) * P1020R1
P1973R1
11*
12*
16 19.28 (16.9)* 15.0.0*
Misceláneos constexpr bits  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1032R1 10 13 19.28 (16.8)* 13.1.6*
Eliminar operadores de comparación de std::span P1085R2 10 8 19.26* 10.0.1*
Hacer la propagación de asignadores con estado más consistente para operator+(basic_string) P1165R1 10 15 19.26* 14.0.3*
Eliminación consistente de contenedores, por ej. std::erase(std::vector) , o std::erase_if(std::map) ( FTM ) * P1209R0
P1115R3
9*
10*
8*
11*
19.25* *
19.27* *
10.0.1* *
12.0.5* *
Unidades de cabecera de la biblioteca estándar P1502R1 11 19.29 (16.10)*
polymorphic_allocator<> como tipo de vocabulario  ( FTM ) * P0339R6 9 16 19.28 (16.9)* 15.0.0*
std::execution::unseq ( FTM ) * P1001R2 9 17 19.28 (16.8)*
std::lerp() y std::midpoint() ( FTM ) * P0811R3 9 9 19.23* (parcial)
19.28 (16.8)*
11.0.3*
Mejoras de usabilidad para std::span P1024R3 10 9*
14
19.26* 11.0.3*
DR17: Hacer std::create_directory() intuitivo P1164R1 8.3 12 19.20* 13.0.0*
std::ssize() y extensión sin signo para std::span ( FTM ) * P1227R2 10 9 19.25* 11.0.3*
Rasgos para arrays ( no ) acotados ( FTM ) * P1357R1 9 9 19.25* 11.0.3*
std::to_array() ( FTM ) * P0325R4 10 10 19.25* 12.0.0*
Acceso eficiente al std::basic_stringbuf buffer P0408R7 11 17 19.29 (16.10)* 15.0.0*
Compatibilidad - de diseño y interconvertibilidad - de punteros traits  ( FTM ) * ( FTM ) * P0466R5 12 19.29 (16.10)* *
Operaciones de bits : 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*
Constantes matemáticas ( FTM ) * P0631R8 10 11 19.25* 12.0.5*
Formateo de texto ( FTM ) * P0645R10 13 14 * *
17
19.29 (16.10)* 15.0.0*
std::stop_token y std::jthread ( FTM ) * P0660R10 10 17
(parcial)*

20*
19.28 (16.9)*
constexpr std::allocator y utilidades relacionadas  ( 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*
Entrada adaptadores de rango P1035R7 10 16 19.29 (16.10)* 15.0.0*
constexpr std::invoke() y utilidades relacionadas P1065R2 10 12 19.28 (16.8)* 13.0.0*
Espera y notificación atómica, std::counting_semaphore , std::latch y 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*
(parcial)
16
19.29 (16.10)* 15.0.0*
Agregar <=> a la biblioteca estándar P1614R2 10 14*
(parcial)
17*
(parcial)
19
19.29 (16.10)* 13.1.6* (parcial)
constexpr constructor predeterminado de std::atomic y std::atomic_flag ( FTM ) * P0883R2 10 13 19.26* 13.1.6*
constexpr para algoritmos numéricos ( FTM ) * P1645R1 10 12 19.26* 13.0.0*
Comparaciones seguras de enteros ( FTM ) * P0586R2 10 13 19.27* 13.1.6*


Característica de C++20


Documento(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

Estándares anteriores

Véase también

Pruebas de características (C++20) Un conjunto de macros de preprocesador para probar las características correspondientes del lenguaje C++ y de la biblioteca
Documentación C para soporte del compilador