Espacios de nombres
Variantes

Apoyo de compiladores de C++

De cppreference.com
< cpp

Las siguientes tablas presentan el apoyo de los compiladores para las nuevas características de C++. Incluyen C++11, C++14, C++17, C++20 y revisiones aceptadas posteriormente (C++23/C++2b) en el estándar, así como varias especificaciones técnicas.

Características de C++23

Ten en cuenta que esta lista puede cambiar a medida que el borrador de C++23/2b evoluciona.

Características principales del lenguaje C++23

Característica de C++23
 
Ponencia(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc
El tipo del literal para size_t (con signo)  (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
Eliminar apoyo para recolección de basura P2186R2 12 N/A 19.30* N/A N/A
Conversiones contextuales estrechantes en static_assert y constexpr if P1401R5 9 13 (partial)*
14
19.44*

14.0.0*

2022.2 20.7
Recorte de espacios en blanco antes del empalme de línea P2223R2 19.50* 6.7 2022.2
Hacer obligatoria la distribución del orden de declaración P1847R4 19.30* 2022.2
Eliminar el modo mezclado de la concatenación de literales de cadena P2201R1 19.44*
Funciones miembro de objeto explícito (deducción de this)  (FTM)* P0847R7 14 18
19*
19.32*
(partial)*
19.43*
6.3 22.5
auto(x) y auto{x}  (FTM)* P0849R8 12 15 19.50*

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 (así como etiquetas y sentencias goto) en funciones constexpr  (FTM)* P2242R3 12 15 19.43*

14.0.3*

6.3 2022.2 22.5
Codificación consistente de literales de carácter P2316R2 19.30* 2022.2
Juegos de caracteres y codificaciones P2314R4 10 19.51* 2022.2
Extender la instrucción de inicialización para permitir la declaración de alias en el bucle for P2360R0 12 14 19.50*

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 Yes* 19.50*

15.0.0*

6.5 2023.2
Eliminar literales de caracteres anchos no codificables y literales de caracteres anchos de múltiples caracteres P2362R3 13 14 19.51*

15.0.0*

6.7 2023.2
Etiquetas al final de las sentencias compuestas P2324R2 13 16 19.51*

16.0.0*

6.5 2023.2 23.9
Secuencias de escape delimitadas P2290R3 13 15 19.50*

15.0.0*

6.7 2023.2
Secuencias de escape universales denominadas  (FTM)* P2071R2 13 15 19.51*

15.0.0*

6.7 2023.2
Relajar algunas restricciones de constexpr  (FTM)* P2448R2 13 17 (partial)
19
19.51* 2024.0 (partial)
Movimiento implícito más simple  (FTM)* P2266R3 13 13 19.50* 6.7 2022.2
static operator()  (FTM)* P1169R4 13 16 19.44*

16.0.0*

6.7 2023.2
Requisitos para los tipos de punto flotante extendidos opcionales P1467R9 13 N/A 6.4
Deducción de argumentos de plantilla de clase a partir de constructores heredados P2582R1 14 19.51*
Attribute [[assume]] P1774R8 13 19 19.51*
Apoyo para UTF-8 como codificación de archivo fuente portátil 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 variables static constexpr en funciones constexpr  (FTM)* P2647R1 13 16 19.51*

16.0.0*

2023.2
Extender la vida útil de los temporales en el inicializador del bucle basado en rangos  (FTM)* P2644R1
P2718R0
CWG2659
15 19 19.51*
DR11: Cambiar el ámbito del tipo de retorno posterior de las expresiones lambda P2036R3
P2579R0
16 17 19.50* 2023.2
DR20: Exportaciones significativas P2615R1 15 17 (partial) 19.28 (16.8)*
DR20: consteval debe propagarse hacia arriba.  (FTM)* P2564R3 14 17 19.52*

16.0.0*

6.7 2024.0
DR98: Sintaxis de identificadores de C++ según el Anexo 31 del estándar Unicode P1949R7 12 14 19.50*

14.0.0*

6.4 2022.2
DR11: Permitir atributos duplicados P2156R1 11 13 19.50*

13.1.6*

6.5 23.9
DR20: Ajustar el valor de la macro de prueba de característica __cpp_concepts P2493R0 12 19.50* 6.4 23.3
DR98: Relajar los requisitos sobre wchar_t para que coincidan con las prácticas existentes P2460R2 19.44*

15.0.0*

N/A 2023.2
DR11: Usar punteros y referencias desconocidos en expresiones constantes P2280R4 14 20* 19.50*
DR20: El operador de igualdad que estás buscando P2468R2 13 16 19.36*

16.0.0*

2023.2
DR20: Compatibilidad y portabilidad de char8_t  (FTM)* P2513R4 13 16 19.34*

16.0.0*

2023.2
DR98/11: Aclarar la notificación 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
 
Ponencia(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc

Características de la biblioteca de C++23

Característica de C++23
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar
Biblioteca de seguimiento de pila. P0881R7 P2301R1 12 (parcial)*
14*
19.34*
<stdatomic.h>. P0943R6 12 15 19.31*

14.0.3*

std::is_scoped_enum. P1048R1 11 12 19.30*

13.0.0*

std::basic_string::contains(), std::basic_string_view::contains(). P1679R3 11 12 19.30*

13.0.0*

std::to_underlying. P1682R3 11 13 19.30*

13.1.6*

Relajación de los requisitos para std::chrono::time_point. P2212R2 N/A N/A N/A N/A
Proporcionar comentarios sobre el tamaño en la interfaz de asignador. P0401R6 16 15 19.30*

14.0.3*

<spanstream>: string-stream con búfer basado en std::span. P0448R4 12 19.31*
std::out_ptr(), std::inout_ptr(). P1132R8 14 19 19.30*
constexpr type_info::operator==(). P1328R1 12 17 19.33**
19.34*

15.0.0*

Constructores de par de iteradores para std::stack y std::queue. P1425R4 12 14 19.31*

14.0.3*

Contexto de no deducción para los asignadores en las guías de deducción de contenedores. P1518R2 12* 13* 19.31**

13.1.6**

ranges::starts_with() y ranges::ends_with(). P1659R3 16 17 (parcial)*
18
19.31*

16.0.0*

Prohibir 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(). P2136R3 12 17 19.31*

15.0.0*

Constructor de rangos para std::basic_string_view. P1989R2 11 14 19.30*

14.0.3*

Argumentos de plantilla por defecto para el constructor de reenvío de std::pair. P1951R1 14 14 19.30*

14.0.3*

Eliminar la recolección de basura y la detección de fugas basada en la accesibilidad (apoyo de la biblioteca). P2186R2 12 14 19.30*

14.0.3*

zip: views::zip, views::zip_transform, views::adjacent, y views::adjacent_transform. P2321R2 13 15 (parcial)*
22
19.33*(parcial)***
19.37*

14.0.3*

Sobrecargas de borrado heterogéneo para contenedores asociativos. P2077R3 16 19.32*
std::byteswap(). P1272R4 12 14 19.31*

14.0.3*

Impresión de volatile T*. P1147R1 11.3 14 19.31*

14.0.3*

basic_string::resize_and_overwrite(). P1072R10 12 14 19.31*

14.0.3*

Operaciones monádicas para std::optional. P0798R8 12 14 19.32*

14.0.3*

std::move_only_function. P0288R9 12 19.32*
Agregar una especificación noexcept condicional a std::exchange. P2401R0 12 14 19.31*

14.0.3*

Requerir que std::span y std::basic_string_view sean TriviallyCopyable. P2251R1 19.31*
Aclarar el estado de los “encabezados de C”. P2340R1
<expected>. P0323R12 P2549R1 12 16 19.33*

15.0.0*

constexpr para <cmath> y <cstdlib>. P0533R9 4.6 (parcial)*
std::unreachable(). P0627R6 12 15 19.32*

14.0.3*

Desaconsejar el uso de std::aligned_storage y std::aligned_union. P1413R3 13 16 19.33*
std::reference_constructs_from_temporary y std::reference_converts_from_temporary. P2255R2 13 (parcial)*
14
21 (parcial)* 19.51*
constexpr std::unique_ptr. P2273R3 12 16 19.33*

15.0.0*

Construcción de contenedores y cadenas a partir de rangos con ranges::to(), constructores etiquetados, funciones miembro insert y assign P1206R7 14 (parcial)*
15
17 19.34*

15.0.0*

Apoyo de tuberías para adaptadores de rango definidos por el usuario (ranges::range_adaptor_closure, std::bind_back). P2387R3 13 (parcial)*
14
19 19.34*
ranges::iota(), ranges::shift_left(), y ranges::shift_right(). P2440R1 13 (parcial)*
16
23 19.34*
views::join_with P2441R2 13 21 19.34*
views::chunk y views::slide. P2442R1 13 19.33*
views::chunk_by. P2443R1 13 18 19.33*

16.0.0*

std::mdspan: una referencia a un array multidimensional sin propiedad. P0009R18 P2599R2 P2604R0 P2613R1 P2763R1 16 17 (parcial)*
18
19.39*

15.0.0*

<flat_map>. P0429R9 15 20 19.51*
<flat_set>. P1222R4 15 21 19.51*
ranges::find_last(), ranges::find_last_if(), y ranges::find_last_if_not(). P1223R5 13 19 19.36*
Biblioteca independiente: <utility>, <ranges>, y <iterator> sencillos. P1642R11 13* 19.38*
views::stride. P1899R3 13 23 19.34*
Compatibilidad entre std::tuple y objetos similares a tuplas. P2165R4 14 2.9 (parcial)* 19.36* (parcial)*
19.37*
parcial*
Corrección de iteradores constantes, centinelas y rangos. views::as_const. P2278R4 13 19.35* (parcial)*
19.36*
Formato a rangos. P2286R8 15 16 19.37*(parcial)*
19.39*(parcial)*
19.41*(parcial)*
19.42*

15.0.0*

Mejorar el formato por defecto de formato de contenedores. P2585R1 15 16 (parcial)*
17
19.42*

15.0.0*

Biblioteca de salida formateada <print>. P2093R14 P2539R4 14 17 (parcial)*
18
19.37*

15.0.0**
16.0.0*

Formato para std::thread::id y std::stacktrace P2693R1 14 17 (parcial)* 19.38*

15.0.0*

constexpr para sobrecargas integrales de std::to_chars() y std::from_chars(). P2291R3 13 16 19.34*

15.0.0*

ranges::contains() y ranges::contains_subrange(). P2302R4 13 19 19.34*

16.0.0**

Algoritmos de pliegue para rangos. P2322R6 13 23
18 (parcial)*
19.35*
views::cartesian_product. P2374R4 P2540R1 13 19.37*
Añadir apoyo para tipos de solo movimiento a los conceptos de comparación (equality_comparable, totally_ordered, three_way_comparable). P2404R3 16 22 19.36*
Iteradores de rangos como entradas para algoritmos que no operan con rangos. P2408R5 16 19.34*
constexpr std::bitset. P2417R2 13 16 19.34*

15.0.0*

basic_string::substr() &&. P2438R2 16 16 19.34*

15.0.0*

views::as_rvalue. P2446R2 13 16 19.34*

15.0.0*

Módulos de la biblioteca estándar. P2465R3 15* 17 (parcial)* 19.35*
(parcial)*
19.36*
std::forward_like(). P2445R1 14 16 19.34*

15.0.0*

Compatibilidad con el modo exclusivo para std::fstream. P2467R1 12 18 19.36*

16.0.0*

views::repeat. P2474R2 13 17 19.36*

15.0.0*

Relajamiento de los adaptadores de rango para permitir tipos de solo movimiento. P2494R2 14 17 19.34*

15.0.0*

El constructor de rango de std::basic_string_view debería ser explicit. P2499R0 12.2 16 19.34*

15.0.0*

std::generator: generador de corrutinas síncronas para rangos. P2502R2 P2787R0 14 19.43*
Agregar una especificación noexcept condicional a std::apply. P2517R1 10 18 19.34*

16.0.0*

Gestión explícita del tiempo de vida (std::start_lifetime_as). P2590R2 P2679R2 16 19.51*
Aclarar el manejo de codificaciones en el formateo de configuración regional de tipos chrono. P2419R2 15* 19.34**
std::move_iterator no debería ser siempre un input_iterator. P2520R0 12.3* 17* 19.34**

15.0.0*

Actualización de guías de deducción para operadores de llamada con parámetro de objeto explícito 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 apoyo de biblioteca para tipos de punto flotante extendidos. P1467R9 13 19.37**
Operaciones monádicas para std::expected. P2505R5 13 17 19.36*

15.0.0*

views::enumerate. P2164R9 13 23 19.37*
std::is_implicit_lifetime. P2674R1 16 20 19.51*
std::common_reference_t de std::reference_wrapper debería ser un tipo referencia. P2655R3 16 21* 19.37*
Prohibir la especialización de usuario de std::allocator_traits P2652R2 19 19.37*
Desaconsejar el uso de std::numeric_limits::has_denorm. P2614R2 17 18 19.37*

16.0.0*

Hacer los constructores de múltiples parámetros de views explicit. P2711R1 16 21
17 (parcial)*
19.36**

15.0.0*

DR20: Relajamiento de rangos solo un poquito. P2609R3 15 20 19.37*
DR20: Almacenamiento de iteradores para un aplanamiento adecuado. P2770R0 14 21
18 (parcial)
19.37*
DR17: std::visit() para clases derivadas de std::variant. P2162R2 11.3 13 19.20**
19.30*

13.1.6*

DR20: Rangos prestados condicionalmente. P2017R1 11 16 19.30*
DR20: Reparar 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. P2325R3 11.3 16 19.30*

15.0.0*

DR20: Los objetos adaptadores de rango vinculan argumentos por valor. P2281R1 11 14 19.29 (16.10)*
(parcial)*
19.31*

14.0.3*

DR20: constexpr para std::optional y std::variant. P2231R1 11.3 (parcial)*
12
13 (parcial)*
19
19.31*

13.1.6* (parcial)

DR20: views::lazy_split y se rediseñó views::split. P2210R2 12 16 19.31*

15.0.0*

DR20: Fix ranges::istream_view P2432R1 12 16 19.31*

15.0.0*

DR20: view con propiedad. P2415R2 12 14 19.31*

14.0.3*

DR20: Arreglar el manejo de configuraciones regionales en los formateadores de chrono. P2372R3 P2418R2 13 19.31*
DR20: Limpieza de tipos de clase enteros. P2393R1 19.32*
DR20: Comprobaciones de cadenas de formato en tiempo de compilación; reducción del tamaño binario de la familia std::format(). P2216R3 13 14 (parcial)*
15
19.32*

14.0.3*

DR20: Añadir apoyo para tipos const no 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 pastillas venenosas son demasiado tóxicas. P2602R2 14 19 19.36*
DR20: Tolerancia de caracteres de relleno de std::format. P2572R1 14 17 19.37*
DR20: Mejora de la estimación de ancho de std::format. P2675R1 14 17 19.38*
DR20: Garantías de finalización de fase de std::barrier P2588R3 19.28 (16.8)**
19.36*
Característica de C++23
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar

Características de C++20

Características principales del lenguaje C++20

Característica de C++20
 
Ponencia(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc
Permitir captura de lambda [=, this] [https://wg21.link/P0409R2 [HTTPS://WG21.LINK/P0409R2
[1] P0409R2]]
8 6 19.22*

10.0.0*

5.1 2021.1 20.7
__VA_OPT__ [https://wg21.link/P0306R4 [HTTPS://WG21.LINK/P0306R4
[2]
P0306R4
[3]
[4] P1042R1]]
8 (parcial)*
10 (parcial)*
9 19.25*

11.0.3*

5.1 2021.1 20.7
Inicializadores designados [https://wg21.link/P0329R4 [HTTPS://WG21.LINK/P0329R4
[5] P0329R4]]
4.7 (parcial)*
8
3.0 (parcial)*
10
19.21* (parcial)* 5.1 2021.1 20.7
Lista de parámetros de plantilla para lambdas genéricas [https://wg21.link/P0428R2 [HTTPS://WG21.LINK/P0428R2
[6] P0428R2]]
8 9 19.22*

11.0.0*

5.1 2021.1 20.7
Inicializadores de miembros por defecto para campos de bits [https://wg21.link/P0683R1 [HTTPS://WG21.LINK/P0683R1
[7] P0683R1]]
8 6 19.25*

10.0.0*

5.1 2021.1 20.7
Constructores con inicialización de lista en la deducción de argumentos de plantillas de clase [https://wg21.link/P0702R1 [HTTPS://WG21.LINK/P0702R1
[8] P0702R1]]
8 6 19.14* 5.0 2021.1 20.7
Punteros a miembros calificados const& [https://wg21.link/P0704R1 [HTTPS://WG21.LINK/P0704R1
[9] P0704R1]]
8 6 19.0 (2015)*

10.0.0*

5.1 2021.1 20.7
Conceptos [https://wg21.link/P0734R0 [HTTPS://WG21.LINK/P0734R0
[10] P0734R0]]
6
(sólo TS)
10
10 19.23* (parcial)*

12.0.0* (parcial)

6.1 2021.5 20.11
Lambdas en contextos no evaluados [https://wg21.link/P0315R4 [HTTPS://WG21.LINK/P0315R4
[11] P0315R4]]
9 13 (parcial)*
14 (parcial)*
19.28 (16.8)*
Operador de comparación de tres vías [https://wg21.link/P0515R3 [HTTPS://WG21.LINK/P0515R3
[12] P0515R3]]
10 8 (parcial)
10
19.20* 5.1 2021.1 20.7
ID: Simplificar captura de lambda implícita [https://wg21.link/P0588R1 [HTTPS://WG21.LINK/P0588R1
[13] P0588R1]]
8 19.24* 5.1 2021.1 20.7
Instrucciones de inicialización para bucle for basado en rango}} [https://wg21.link/P0614R1 [HTTPS://WG21.LINK/P0614R1
[14] P0614R1]]
9 8 19.25*

11.0.0*

6.0 20.11
Lambdas sin estado construibles y asignables por defecto [https://wg21.link/P0624R2 [HTTPS://WG21.LINK/P0624R2
[15] P0624R2]]
9 8 19.22*

10.0.1*

5.1 2021.1 20.7
Coincidencia errónea const con constructor de copia por defecto (= default) [https://wg21.link/P0641R2 [HTTPS://WG21.LINK/P0641R2
[16] P0641R2]]
9 8 19.0 (2015)*

10.0.1*

5.1 2021.1 20.7
Verificación de acceso en especializaciones [https://wg21.link/P0692R1 [HTTPS://WG21.LINK/P0692R1
[17] P0692R1]]
8 (parcial) 19.26*

10.0.1* (parcial)

5.1 2021.1 20.7
Búsqueda dependiente de argumento (ADL) y plantillas de función que no son visibles [https://wg21.link/P0846R0 [HTTPS://WG21.LINK/P0846R0
[18] P0846R0]]
9 9 19.21*

11.0.3*

5.1 2021.1 20.7
ID: Especificar cuándo las definiciones de funciones constexpr son necesarias para la evaluación constante [https://wg21.link/P0859R0 [HTTPS://WG21.LINK/P0859R0
[19] P0859R0]]
5.2 (parcial)*
9
8 19.27* (parcial)*
19.31*
Atributos [[likely]] y [[unlikely]] [https://wg21.link/P0479R5 [HTTPS://WG21.LINK/P0479R5
[20] P0479R5]]
9 12 19.26*

13.0.0*

5.1 20.7
Hacer typename más opcional [https://wg21.link/P0634R3 [HTTPS://WG21.LINK/P0634R3
[21] P0634R3]]
9 19.29 (16.10)* 5.1 20.7
Expansión de paquete en captura de inicialización (init-capture) de lambda [https://wg21.link/P0780R2 [HTTPS://WG21.LINK/P0780R2
[22] P0780R2]]
9 9 19.22*

11.0.3*

6.1 20.11
Atributo [[no_unique_address]] [https://wg21.link/P0840R2 [HTTPS://WG21.LINK/P0840R2
[23] P0840R2]]
9 9 19.28 (16.9)**

11.0.3*

5.1 2021.1 20.7
Funciones miembro especiales condicionalmente triviales [https://wg21.link/P0848R3 [HTTPS://WG21.LINK/P0848R3
[24] P0848R3]]
10 19.28 (16.8)* 6.1 20.11
ID: Relajar las reglas para encontrar un punto de personalización para vínculos estructurados [https://wg21.link/P0961R1 [HTTPS://WG21.LINK/P0961R1
[25] P0961R1]]
8 8 19.21*

10.0.1*

5.1 2021.1 20.7
ID: Relajar las reglas para encontrar un punto de personalización para el bucle for basado en rango [https://wg21.link/P0962R1 [HTTPS://WG21.LINK/P0962R1
[26] P0962R1]]
8 8 19.25* 5.1 2021.1 20.7
ID: Permitir vínculos estructurados para miembros accesibles [https://wg21.link/P0969R0 [HTTPS://WG21.LINK/P0969R0
[27] P0969R0]]
8 8 19.21*

10.0.1*

5.1 2021.1 20.7
Destruir el operador delete [https://wg21.link/P0722R3 [HTTPS://WG21.LINK/P0722R3
[28] P0722R3]]
9 6 19.27*

10.0.0*

6.1 20.11
Tipos clase en parámetros de plantilla de no tipo [https://wg21.link/P0732R2 [HTTPS://WG21.LINK/P0732R2
[29] P0732R2]]
9 12 (parcial) 19.26*(parcial)*
19.28 (16.9)*
6.2
Poner en desuso la captura implícita de this mediante [=] [https://wg21.link/P0806R2 [HTTPS://WG21.LINK/P0806R2
[30] P0806R2]]
9 7 19.22* 5.1 20.7
explicit(bool) [https://wg21.link/P0892R2 [HTTPS://WG21.LINK/P0892R2
[31] P0892R2]]
9 9 19.24*

11.0.3*

5.1 2021.1 20.7
Integrar macros de prueba de característica [https://wg21.link/P0941R2 [HTTPS://WG21.LINK/P0941R2
[32] P0941R2]]
5 3.4 19.15* (parcial)
19.20*
5.0 2021.1 20.7
Prohibir agregados con constructores declarados por el usuario [https://wg21.link/P1008R1 [HTTPS://WG21.LINK/P1008R1
[33] P1008R1]]
9 8 19.20*

10.0.1*

5.1 2021.1 20.7
Función virtual constexpr [https://wg21.link/P1064R0 [HTTPS://WG21.LINK/P1064R0
[34] P1064R0]]
9 9 19.28 (16.9)*

11.0.3*

5.1 2021.1 20.7
Mejoras de consistencia para comparaciones [https://wg21.link/P1120R0 [HTTPS://WG21.LINK/P1120R0
[35] P1120R0]]
10 8 (parcial)
10
19.22*

10.0.1* (parcial)

5.1 20.7
char8_t [https://wg21.link/P0482R6 [HTTPS://WG21.LINK/P0482R6
[36] P0482R6]]
9 7* 19.22*

10.0.0*

5.1 2021.1 20.7
std::is_constant_evaluated() [https://wg21.link/P0595R2 [HTTPS://WG21.LINK/P0595R2
[37] P0595R2]]
9 9 19.25*

11.0.3*

5.1 19.1
Bloques try-catch constexpr [https://wg21.link/P1002R1 [HTTPS://WG21.LINK/P1002R1
[38] P1002R1]]
9 8 19.25*

10.0.1*

5.1 20.7
Funciones inmediatas (consteval) [https://wg21.link/P1073R3 [HTTPS://WG21.LINK/P1073R3
[39] P1073R3]]
10 (parcial)*
11
11 (parcial)
14 (parcial)*
19.28 (16.8)**
(parcial)
19.29 (16.10)*
5.1 2021.1 20.7
Espacios de nombres en línea anidados [https://wg21.link/P1094R2 [HTTPS://WG21.LINK/P1094R2
[40] P1094R2]]
9 8 19.27*

10.0.1*

5.1 2021.1 20.7
Aún otro enfoque para declaraciones restringidas [https://wg21.link/P1141R2 [HTTPS://WG21.LINK/P1141R2
[41] P1141R2]]
10 10 19.26* (parcial)
19.28 (16.9)*
6.1 20.11
Enteros con signo son complemento a dos [https://wg21.link/P1236R1 [HTTPS://WG21.LINK/P1236R1
[42] P1236R1]]
9 9

11.0.3*

N/A N/A yes
dynamic_cast constexpr typeid polimórfico en expresiones constantes [https://wg21.link/P1327R1 [HTTPS://WG21.LINK/P1327R1
[43] P1327R1]]
10 9 19.28 (16.9)*

11.0.3*

5.1 2021.1 20.7
Cambiar el miembro activo de una unión dentro de constexpr [https://wg21.link/P1330R0 [HTTPS://WG21.LINK/P1330R0
[44] P1330R0]]
9 9 19.10*

11.0.3*

5.1 2021.1 20.7
Corrutinas [https://wg21.link/P0912R5 [HTTPS://WG21.LINK/P0912R5
[45] P0912R5]]
10 8 (parcial) 19.0 (2015)* (parcial)
19.10* (sólo TS)
19.28 (16.8)*

10.0.1* (parcial)

5.1 2021.1
Inicialización de agregados usando paréntesis [https://wg21.link/P0960R3 [HTTPS://WG21.LINK/P0960R3
[46] P0960R3]]
10 19.28 (16.8)* 5.1 2021.1 20.7
ID: Deducción de tamaños de arrays en expresiones new [https://wg21.link/P1009R2 [HTTPS://WG21.LINK/P1009R2
[47] P1009R2]]
11 9 19.27*

11.0.3*

5.1 2021.1 20.7
Módulos [https://wg21.link/P1103R3 [HTTPS://WG21.LINK/P1103R3
[48] P1103R3]]
11 (parcial) 8 (parcial) 19.0 (2015)* (parcial)
19.10* (sólo TS)
19.28 (16.8)*

10.0.1* (parcial)

Requerimientos de Unicode más firmes [https://wg21.link/P1041R4 [HTTPS://WG21.LINK/P1041R4
[49]
P1041R4
[50]
[51] P1139R2]]
10 19.0 (2015)* (P1041R4)
19.26* (P1139R2)
N/A
<=> != == [https://wg21.link/P1185R2 [HTTPS://WG21.LINK/P1185R2
[52] P1185R2]]
10 10 19.22* 5.1 2021.1 20.7
ID: Funciones explícitamente marcadas como =default con diferentes especificaciones de excepción [https://wg21.link/P1286R2 [HTTPS://WG21.LINK/P1286R2
[53] P1286R2]]
10 9 19.28 (16.8)*

11.0.3*

5.1 2021.1 20.7
Captura de lambdas y especificadores de clase de almacenamiento de vínculos estructurados [https://wg21.link/P1091R3 [HTTPS://WG21.LINK/P1091R3
[54]
P1091R3
[55]
[56] P1381R1]]
10 8 (parcial) 19.11*(P1381R1)
19.24*(P1091R3)

10.0.1* (parcial)

5.1 2021.1 20.7
Permitir conversiones a arrays de límite desconocido [https://wg21.link/P0388R4 [HTTPS://WG21.LINK/P0388R4
[57] P0388R4]]
10 14 19.27* 6.0 2021.5 20.11
Operaciones de contenedores constexpr [https://wg21.link/P0784R7 [HTTPS://WG21.LINK/P0784R7
[58] P0784R7]]
10 10 19.28 (16.9)* 6.0 2021.5 20.11
Poner en desuso algunos usos de volatile [https://wg21.link/P1152R4 [HTTPS://WG21.LINK/P1152R4
[59] P1152R4]]
10 10 19.27* 6.0 2021.5 20.11
constinit [https://wg21.link/P1143R2 [HTTPS://WG21.LINK/P1143R2
[60] P1143R2]]
10 10 19.29 (16.10)* 6.1 20.11
Poner en desuso el operador coma en índices/subíndices [https://wg21.link/P1161R3 [HTTPS://WG21.LINK/P1161R3
[61] P1161R3]]
10 9 19.25*

11.0.3*

6.0 2021.5 20.11
Atributo [[nodiscard]] con mensaje [https://wg21.link/P1301R4 [HTTPS://WG21.LINK/P1301R4
[62] P1301R4]]
10 9 19.25*

11.0.3*

6.0 2021.5 20.11
Inicialización trivial por defecto en funciones constexpr [https://wg21.link/P1331R2 [HTTPS://WG21.LINK/P1331R2
[63] P1331R2]]
10 10 19.27* 6.1 20.11
Declaración asm no evaluada en funciones constexpr [https://wg21.link/P1668R1 [HTTPS://WG21.LINK/P1668R1
[64] P1668R1]]
10 10 19.28 (16.9)* 6.1 20.11
using enum [https://wg21.link/P1099R5 [HTTPS://WG21.LINK/P1099R5
[65] P1099R5]]
11 13 19.24* 6.3
Sintetizar la comparación de tres vías para una categoría de comparación especificada [https://wg21.link/P1186R3 [HTTPS://WG21.LINK/P1186R3
[66] P1186R3]]
11 10 19.24* 6.0 2021.5 20.11
ID: Atributo [[nodiscard]] para constructores [https://wg21.link/P1771R1 [HTTPS://WG21.LINK/P1771R1
[67] P1771R1]]
10 9 19.24*

11.0.3*

6.0 2021.5 20.11
Deducción de argumentos de plantillas de clase para alias de plantilla [https://wg21.link/P1814R0 [HTTPS://WG21.LINK/P1814R0
[68] P1814R0]]
10 19.27*
Deducción de argumentos de plantillas de clase para agregados [https://wg21.link/P1816R0 [HTTPS://WG21.LINK/P1816R0
[69]
P1816R0
[70]
[71] P2082R1]]
10(P1816R0)
11(P2082R1)
19.27*
ID: Movimiento implícito para objetos más locales y referencias r-valor [https://wg21.link/P1825R0 [HTTPS://WG21.LINK/P1825R0
[72] P1825R0]]
11* 13 19.24* 6.0 2021.5 20.11
Permitir hacer comparaciones por defecto por valor [https://wg21.link/P1946R0 [HTTPS://WG21.LINK/P1946R0
[73] P1946R0]]
10 10 19.25* 6.1 20.11
Eliminar std::weak_equality y std::strong_equality [https://wg21.link/P1959R0 [HTTPS://WG21.LINK/P1959R0
[74] P1959R0]]
10 10 19.25* 6.1 20.11
Inconsistencias con parámetros de plantilla sin tipo [https://wg21.link/P1907R1 [HTTPS://WG21.LINK/P1907R1
[75] P1907R1]]
10 (parcial)
11
12 (parcial) 19.26* 6.2
ID: Pseudodestructores terminan los tiempos de vida de los objetos [https://wg21.link/P0593R6 [HTTPS://WG21.LINK/P0593R6
[76] P0593R6]]
11 11 N/A N/A
ID: Convertir de T* a bool debe considerarse de estrechamiento [https://wg21.link/P1957R2 [HTTPS://WG21.LINK/P1957R2
[77] P1957R2]]
10*
11*
11 19.27* 6.1
Característica de C++20
 
Ponencia(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc

Características de la biblioteca de C++20

Característica de C++20
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar
std::endian P0463R1 8 7 19.22*

10.0.0*

Extender std::make_shared() para admitir arrays P0674R1 12 19.27*
Tipo atómico de punto flotante P0020R6 10 19.22*
Flujo de salida sincronizado con búfer P0053R7 11 19.29 (16.10)*
constexpr para <algorithm> y <utility> P0202R3 10 8 (parcial)
12
19.26*

10.0.1* (parcial)
12.0.5*

Más constexpr para <complex> P0415R1 9 7 (parcial) 19.27*

10.0.0* (parcial)

Hacer std::memory_order una enumeración con ámbito P0439R0 9 9 19.25*

11.0.3*

Verificación de prefijo y sufijo de cadenas: string(_view) ::starts_with/ends_with P0457R2 9 6 19.21*

10.0.0*

Apoyo de la biblioteca para la operator<=> <compare> P0768R1 10 7(parcial)
12
19.20* (parcial)
19.28 (16.9)*

10.0.0* (parcial)

std::remove_cvref P0550R2 9 6 19.20*

10.0.0*

Atributo [[nodiscard]] en la biblioteca estándar P0600R1 9 7 (parcial) 19.13* (parcial)
19.22*

10.0.0* (parcial)

Usar std::move en algoritmos numéricos P0616R0 9 12 19.23*
Utilería para convertir un puntero a un puntero sin formato P0653R2 8 6 19.22*
std::shared_ptr y std::weak_ptr atómicos P0718R2 19.27*
std::span P0122R7 10 7 19.26*

10.0.0*

Calendario y huso horario P0355R7 11 (parcial) 7 (parcial) 19.29 (16.10)*

10.0.0* (parcial)

<version> P0754R2 9 7 19.22*

10.0.0*

Comparar contenedores no ordenados P0809R0 16.0*
Requerimientos de ConstexprIterator P0858R0 9 12 19.11*
std::basic_string::reserve() no debe encogerse P0966R1 11 8 19.25*

10.0.1*

Comparación e intercambio atómico con bits de relleno P0528R3 19.28 (16.8)*
std::atomic_ref P0019R8 10 19.28 (16.8)*
Función miembro contains() de contenedores asociativos, p. ej., e.g. std::map::contains() P0458R2 9 9 (parcial)*
13
19.21*

11.0.3*

ID: Construcción pieza por pieza de la elisión de copia obligatoria P0475R1 9 19.29 (16.10)*
std::bit_cast() P0476R2 11 19.27*
Operaciones enteras de la potencia al cuadrado:

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

P0556R3 P1956R1 9 (P0556R3)
10 (P1956R1)
9 (P0556R3)
12 (P1956R1)
19.25* (P0556R3)*
19.27* (P1956R1)*
19.28 (16.8)*
Mejorar el valor de retorno de los algoritmos similares a erase P0646R1 9 10 19.21*
std::destroying_delete P0722R3 9 9 19.27*

11.0.3*

std::is_nothrow_convertible P0758R1 9 9 19.23*

11.0.3*

Añadir std::shift_left/right a <algorithm> P0769R2 10 12 19.21*
Constexpr para std::swap() y funciones relacionadas con swap P0879R0 10 12 (parcial)
13
19.26*
std::type_identity P0887R1 9 8 19.21*

10.0.1*

Biblioteca de conceptos P0898R3 10 13 19.23*

12.0.0* (parcial)

Operadores de comparación constexpr para std::array P1023R0 10 8 19.27*

10.0.1*

std::unwrap_ref_decay y std::unwrap_reference P0318R1 9 8 19.21*

10.0.1*

std::bind_front() P0356R5 9 13 19.25*
std::reference_wrapper para tipos incompletos P0357R3 9 8 19.26*

10.0.1*

Fixing operator>>(basic_istream&, CharT*) P0487R1 11 8 19.23*

10.0.1*

Apoyo de la biblioteca para char8_t P0482R6 9 8 (parcial)*
19.22*
Funciones de utilería para implementar la construcción de uses-allocator P0591R4 9 19.29 (16.10)*
ID: std::variant y std::optional deberían propagar la trivialidad de copia/movimiento P0602R4 8.3 8 19.11*

10.0.1*

Un constructor de conversión de std::variant sano P0608R3 10 9 19.29 (16.10)*

11.0.3*

El constructor de movimiento de std::function debería ser noexcept P0771R1 7.2 6 19.22*
La Propuesta de una sola biblioteca de rangos P0896R4 10 13 (parcial) 19.29 (16.10)*
Búsqueda heterogénea para contenedores no ordenados P0919R3 P1690R1 11 12 19.23* (P0919R3)
19.25* (P1690R1)
<chrono> zero(), min(), y max() deberían ser noexcept P0972R0 9 8 19.14*

10.0.1*

constexpr en std::pointer_traits P1006R1 9 8 19.26*

10.0.1*

std::assume_aligned() P1007R3 9*
11
19.28 (16.9)*
Creación de punteros inteligentes con inicialización por defecto (p. ej., make_unique_for_overwrite) P1020R1
P1973R1
11 (unique_ptr)
12 (shared_ptr)
19.28 (16.9)*
Bits constexpr misceláneos P1032R1 10 13 19.28 (16.8)*
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 19.26*
Borrado de contenedores consistente; p. ej., std::erase(std::vector), o std::erase_if(std::map) P1209R0 P1115R3 9 (P1209R0)
10 (P1115R3)
8 (P1209R0)
11 (P1115R3)
19.25* (P1209R0)
19.27* (P1115R3)

10.0.1* (P1209R0)

Unidades de encabezado de la biblioteca estándar P1502R1 11 19.29 (16.10)*
polymorphic_allocator<> como un tipo vocabulario P0339R6 9 19.28 (16.9)*
std::execution::unseq P1001R2 9 19.28 (16.8)*
std::lerp() y std::midpoint() 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*

ID: Hacer create_directory() intuitiva P1164R1 8.3 12 19.20*
std::ssize() y medida sin signo para std::span P1227R2 10 9 19.25*

11.0.3*

Rasgos de tipo para arrays con límite (des)conocido P1357R1 9 9 19.25*

11.0.3*

std::to_array() P0325R4 10 10 19.25*
Acceso eficiente al búfer de std::basic_stringbuf P0408R7 11 19.29 (16.10)*
Compatibilidad de distribución y rasgos de tipo de interconvertibilidad de punteros P0466R5 19.27*
Operaciones de bits: std::

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

P0553R4 9 9 19.25**
19.28 (16.8)*

11.0.3*

Constantes matemáticas P0631R8 10 11 19.25*
Formato de texto P0645R10 14 (parcial)* 19.29 (16.10)*
std::stop_token y std::jthread P0660R10 10 19.28 (16.9)*
std::allocator constexpr y utilerías relacionadas P0784R7 10 12 19.29 (16.10)*
std::string constexpr P0980R1 12 19.29 (16.10)*
19.30**
std::vector constexpr P1004R2 12 19.29 (16.10)*
19.30**
Adaptadores de rango de entrada P1035R7 10 19.29 (16.10)*
std::invoke() constexpr y utilerías relacionadas P1065R2 10 12 19.28 (16.8)*
Espera y notificación atómica, std::counting_semaphore, std::latch y std::barrier P1135R6 11 11 19.28 (16.8)*
std::source_location P1208R6 11 19.29 (16.10)*
Añadir <=> a la biblioteca estándar P1614R2 10 14 19.29 (16.10)*
constructor constexpr por defecto de std::atomic y std::atomic_flag P0883R2 10 13 19.26*
constexpr para algoritmos numéricos P1645R1 10 12 19.26*
Comparaciones de enteros seguras P0586R2 10 13 19.27*
Característica de C++20
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar

Características de C++17

Características principales del lenguaje C++17

Característica de C++17
 
Ponencia(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc
ID: Nuevas reglas de auto para inicialización de lista directa [https://wg21.link/N3922 [HTTPS://WG21.LINK/N3922
[78] N3922]]
6 3.9 19.12* 4.14 19.0 19.1 11.0
static_assert sin mensaje [https://wg21.link/N3928 [HTTPS://WG21.LINK/N3928
[79] N3928]]
6 2.5 19.10* 4.12 18.0 17.7 11.0
typename en un parámetro de plantilla de plantilla [https://wg21.link/N4051 [HTTPS://WG21.LINK/N4051
[80] N4051]]
5 3.5 19.0 (2015)* 4.10.1 17.0 17.7 Sí*
Eliminar trígrafos [https://wg21.link/N4086 [HTTPS://WG21.LINK/N4086
[81] N4086]]
5 3.5 16.0* 5.0 19.1 11.0
Definición de espacios de nombre anidados [https://wg21.link/N4230 [HTTPS://WG21.LINK/N4230
[82] N4230]]
6 3.6 19.0 (Update 3)* 4.12 17.0 17.7 11.0
Atributos para espacios de nombre y enumeradores [https://wg21.link/N4266 [HTTPS://WG21.LINK/N4266
[83] N4266]]
4.9 (partial)*
6
3.6 19.0 (2015)* 4.11 17.0 17.7 11.0
Literales de carácter u8 [https://wg21.link/N4267 [HTTPS://WG21.LINK/N4267
[84] N4267]]
6 3.6 19.0 (2015)* 4.11 17.0 17.7 11.0
Permitir evaluación constante para todos los argumentos de plantilla de no tipo [https://wg21.link/N4268 [HTTPS://WG21.LINK/N4268
[85] N4268]]
6 3.6 19.12* 5.0 19.0.1 19.1 11.0
Expresiones de pliegue [https://wg21.link/N4295 [HTTPS://WG21.LINK/N4295
[86] N4295]]
6 3.6 19.12* 4.14 19.0 18.1 11.0
Expresiones de pliegue unarias y paquetes de parámetros vacíos [https://wg21.link/P0036R0 [HTTPS://WG21.LINK/P0036R0
[87] P0036R0]]
6 3.9 19.12* 4.14 19.0 19.1 11.0
Eliminar uso obsoleto de la palabra clave register [https://wg21.link/P0001R1 [HTTPS://WG21.LINK/P0001R1
[88] P0001R1]]
7 3.8 19.11* 4.13 18.0 17.7 11.0
Remover operator++(bool) obsoleto [https://wg21.link/P0002R1 [HTTPS://WG21.LINK/P0002R1
[89] P0002R1]]
7 3.8 19.11* 4.13 18.0 17.7 11.0
Hacer las especificaciones de excepciones parte del sistema de tipos [https://wg21.link/P0012R1 [HTTPS://WG21.LINK/P0012R1
[90] P0012R1]]
7 4 19.12* 4.14 19.0 19.1 11.0
Inicialización de agregados con clases base [https://wg21.link/P0017R1 [HTTPS://WG21.LINK/P0017R1
[91] P0017R1]]
7 3.9 19.14* 5.0 19.0.1 19.1 11.0
__has_include en condicionales del preprocesador [https://wg21.link/P0061R1 [HTTPS://WG21.LINK/P0061R1
[92] P0061R1]]
5 19.11* 4.13 18.0 17.7 11.0
ID: Nueva especificación para constructores heredados (ID 1941 et al) [https://wg21.link/P0136R1 [HTTPS://WG21.LINK/P0136R1
[93] P0136R1]]
7 3.9 19.14* 6.1 19.1 11.0
Captura de lambda de *this [https://wg21.link/P0018R3 [HTTPS://WG21.LINK/P0018R3
[94] P0018R3]]
7 3.9 19.11* 4.14 19.0 18.1 11.0
Inicialización de lista directa de enumeraciones [https://wg21.link/P0138R2 [HTTPS://WG21.LINK/P0138R2
[95] P0138R2]]
7 3.9 19.11* 4.14 18.0 19.1 11.0
Expresiones lambda constexpr [https://wg21.link/P0170R1 [HTTPS://WG21.LINK/P0170R1
[96] P0170R1]]
7 5 19.11* 4.14 19.0 18.1 11.0
Tipos que difieren en begin y end en bucle for basado en rango [https://wg21.link/P0184R0 [HTTPS://WG21.LINK/P0184R0
[97] P0184R0]]
6 3.9 19.10* 4.12 18.0 17.7 11.0
Atributo [[fallthrough]] [https://wg21.link/P0188R1 [HTTPS://WG21.LINK/P0188R1
[98] P0188R1]]
7 3.9 19.10* 4.13 18.0 17.7 11.0
Atributo [[nodiscard]] [https://wg21.link/P0189R1 [HTTPS://WG21.LINK/P0189R1
[99] P0189R1]]
7 3.9 19.11* 4.13 18.0 17.7 11.0
Atributo [[maybe_unused]] [https://wg21.link/P0212R1 [HTTPS://WG21.LINK/P0212R1
[100] P0212R1]]
7 3.9 19.11* 4.13 18.0 17.7 11.0
Literales de punto flotante hexadecimales [https://wg21.link/P0245R1 [HTTPS://WG21.LINK/P0245R1
[101] P0245R1]]
3.0 19.11* 4.13 18.0 17.7 11.0
Usar atributos de espacios de nombres sin repetición [https://wg21.link/P0028R4 [HTTPS://WG21.LINK/P0028R4
[102] P0028R4]]
7 3.9 19.11* 4.13 18.0 17.7 11.0
Asignación de memoria dinámica para datos sobrealineados [https://wg21.link/P0035R4 [HTTPS://WG21.LINK/P0035R4
[103] P0035R4]]
7 4 19.12*

10.0.0*

4.14 19.0 19.1 11.0
Deducción de argumentos de plantillas de clase [https://wg21.link/P0091R3 [HTTPS://WG21.LINK/P0091R3
[104] P0091R3]]
7 5 19.14* 5.0 19.0.1 19.1 11.0
Parámetros de plantilla de no tipo con el tipo auto [https://wg21.link/P0127R2 [HTTPS://WG21.LINK/P0127R2
[105] P0127R2]]
7 4 19.14* 5.0 19.0.1 19.1 11.0
Elisión de copia obligatoria [https://wg21.link/P0135R1 [HTTPS://WG21.LINK/P0135R1
[106] P0135R1]]
7 4 19.13* 5.0 19.0.1 19.1 11.0
Reemplazo de objetos de clase que contienen miembros de referencia [https://wg21.link/P0137R1 [HTTPS://WG21.LINK/P0137R1
[107] P0137R1]]
7 6 19.14* 5.0 19.1 11.0
Orden de evaluación de expresiones más estricto [https://wg21.link/P0145R3 [HTTPS://WG21.LINK/P0145R3
[108] P0145R3]]
7 4 19.14* 5.0 19.0.1 19.1 11.0
Vínculos estructurados [https://wg21.link/P0217R3 [HTTPS://WG21.LINK/P0217R3
[109] P0217R3]]
7 4 19.11* 4.14 19.0 18.1 11.0*
Ignorar atributos desconocidos [https://wg21.link/P0283R2 [HTTPS://WG21.LINK/P0283R2
[110] P0283R2]]
3.9 19.11* 4.13 18.0 17.7 11.0
Instrucciones constexpr if [https://wg21.link/P0292R2 [HTTPS://WG21.LINK/P0292R2
[111] P0292R2]]
7 3.9 19.11* 4.14 19.0 18.1 11.0
if y switch con un inicializador [https://wg21.link/P0305R1 [HTTPS://WG21.LINK/P0305R1
[112] P0305R1]]
7 3.9 19.11* 4.14 18.0 18.1 11.0
Variables en línea [https://wg21.link/P0386R2 [HTTPS://WG21.LINK/P0386R2
[113] P0386R2]]
7 3.9 19.12* 4.14 19.0 18.1 11.0
Eliminar especificaciones de excepciones dinámicas [https://wg21.link/P0003R5 [HTTPS://WG21.LINK/P0003R5
[114] P0003R5]]
7 4 19.10* 4.14 19.0 19.1 11.0
Expansión de paquetes en declaraciones using [https://wg21.link/P0195R2 [HTTPS://WG21.LINK/P0195R2
[115] P0195R2]]
7 4 19.14* 5.0 19.0 19.1 11.0
ID: Coincidencia de argumentos de plantilla de plantilla excluye plantillas compatibles [https://wg21.link/P0522R0 [HTTPS://WG21.LINK/P0522R0
[116] P0522R0]]
7 4 19.12* 5.0 19.0.1 19.1 11.0
Característica de C++17
 
Ponencia(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc

Características de la biblioteca de C++17

Característica de C++17
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Intel Parallel STL
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar
std::void_t N3911 6 3.6 19.0 (2015)* N/A 10.3
std::uncaught_exceptions() N4259 6 3.7 19.0 (2015)* N/A 10.3
std::size(), std::empty() y std::data() N4280 6 3.6 19.0 (2015)* N/A 10.3
Mejorar std::pair y std::tuple N4387 6 4 19.0 (Update 2)* N/A 10.3
std::bool_constant N4389 6 3.7 19.0 (2015)* N/A 10.3
std::shared_mutex (sin tiempo) N4508 6 3.7 19.0 (Update 2)* N/A 10.3
Rasgos de tipo de plantillas de variable P0006R0 7 3.8 19.0 (Update 2)* N/A 10.3
Rasgos de tipo para operadores lógicos P0013R1 6 3.8 19.0 (Update 2)* N/A 10.3
Estandarización de la especificación técnica de paralelismo P0024R2 9* 19.14* 18.0*
std::clamp() P0025R0 7 3.9 19.0 (Update 3)*

10.0.0*

N/A 10.3
Tamaño de interferencia de hardware P0154R1 12 19.11* N/A 10.3
Rasgos de tipo intercambiables (nothrow) P0185R1 7 3.9 19.0 (Update 3)*

10.0.0*

N/A 10.3
Biblioteca de sistema de archivos P0218R1 8 7 19.14*

11.0.0*

N/A 10.3
std::string_view N3921
P0220R1
7 4 19.10*

10.0.0*

N/A 10.3
std::any P0220R1 7 4 19.10*

10.0.0*

N/A 10.3
std::optional P0220R1 7 4 19.10*

10.0.0*

N/A 10.3
Recursos de memoria polimórficos P0220R1 9 19.13* N/A 10.3
Funciones matemáticas especiales P0226R1 7 19.14* N/A 10.3
C++17 debe referirse a C11 en lugar de C99 P0063R3 9 7 19.0 (2015)*
(parcial)*

10.0.0*

N/A
Mapas y Conjuntos (maps/sets) unidos P0083R3 7 8 19.12*

10.0.0*

N/A
std::variant P0088R3 7 4 19.10*

10.0.0*

N/A 10.3
std::make_from_tuple() P0209R2 7 3.9 19.10* N/A 10.3
std::has_unique_object_representations P0258R2 7 6 19.11* N/A 10.3
std::gcd() y std::lcm() P0295R0 7 4 19.11* N/A 10.3
std::not_fn P0005R4
P0358R1
7 3.9 19.12* N/A 10.3
Conversiones elementales de cadenas P0067R5 8 (no punto flotante)
11
7 (no punto flotante)
14 (no punto flotante from_chars)
19.14* (no punto flotante)*
19.24*

10.0.0* (no punto flotante)

N/A 10.3 (no punto flotante from_chars)
std::shared_ptr y std::weak_ptr con apoyo para arrays P0414R2 7 11 19.12*

12.0.0*

N/A 10.3
std::scoped_lock P0156R2 7 5 19.11* N/A 10.3
std::byte P0298R3 7 5 19.11* N/A 10.3
std::is_aggregate LWG2911 7 5 19.15* N/A 10.3
Característica de C++17
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Intel Parallel STL
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar

Notas:

  • A partir de 2020-11-20, el último lanzamiento de Oracle Developer Studio es 12.6. Su documentación no menciona C++17.

Características de C++14

Características principales del lenguaje C++14

Característica de C++14
 
Ponencia(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc
Redacción afinada para conversiones contextuales [https://wg21.link/N3323 [HTTPS://WG21.LINK/N3323
[117] N3323]]
4.9 3.4 18.0* 4.9 16.0 16.1 9.0 8.6
Literales binarios [https://wg21.link/N3472 [HTTPS://WG21.LINK/N3472
[118] N3472]]
4.3 (GNU)
4.9
2.9 19.0 (2015)* 4.10 11.0 2015 9.0 8.6
decltype(auto), Deducción de tipo de retorno para funciones normales [https://wg21.link/N3638 [HTTPS://WG21.LINK/N3638
[119] N3638]]
4.8 (parcial)*
4.9
3.3 (parcial)*
3.4
19.0 (2015)* 4.9 15.0 16.1 9.0 8.6
Capturas de lambdas inicializadas/generalizadas (init-capture) [https://wg21.link/N3648 [HTTPS://WG21.LINK/N3648
[120] N3648]]
4.5 (parcial)
4.9
3.4 19.0 (2015)* 4.10 15.0 16.1 9.0 8.6
Expresiones lambda genéricas [https://wg21.link/N3649 [HTTPS://WG21.LINK/N3649
[121] N3649]]
4.9 3.4 19.0 (2015)* 4.10 16.0 16.1 9.0 8.6
Plantillas de variable [https://wg21.link/N3651 [HTTPS://WG21.LINK/N3651
[122] N3651]]
5 3.4 19.0 (Update 2)* 4.11 17.0 17.4 9.0 8.6
constexpr extendidas [https://wg21.link/N3652 [HTTPS://WG21.LINK/N3652
[123] N3652]]
5 3.4 19.10* 4.11 17.0 17.4 9.0 8.6
Agregados con inicializadores de miembros (NSDMI) [https://wg21.link/N3653 [HTTPS://WG21.LINK/N3653
[124] N3653]]
5 3.3 19.10* 4.9 16.0 16.1 9.0 8.6
Omitir/extender asignaciones de memoria [https://wg21.link/N3664 [HTTPS://WG21.LINK/N3664
[125] N3664]]
N/A 3.4 N/A N/A N/A 17.4 N/A 8.6
Atributo [[deprecated]] [https://wg21.link/N3760 [HTTPS://WG21.LINK/N3760
[126] N3760]]
4.9 3.4 19.0 (2015)* 4.9 15.0*
16.0
16.1 9.0 8.6
Desasignación con tamaño [https://wg21.link/N3778 [HTTPS://WG21.LINK/N3778
[127] N3778]]
5 3.4 19.0 (2015)* 4.10.1 17.0 16.1 8.6
Comilla sencilla como separador de dígitos [https://wg21.link/N3781 [HTTPS://WG21.LINK/N3781
[128] N3781]]
4.9 3.4 19.0 (2015)* 4.10 16.0 2015 9.0 8.6
Característica de C++14
 
Ponencia(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc

Características de la biblioteca de C++14

Característica de C++14
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar
constexpr para <complex> N3302 5 3.4 19.0 (2015)* 5.15 10.3 8.6
Operadores objetos función] transparentes N3421 4.9 3.4 18.0* 5.15 10.3 8.6
std::result_of y SFINAE N3462 5 19.0 (Update 2)* 5.15 10.3 8.6
constexpr para <chrono> N3469 5 3.4 19.0 (2015)* 5.15 10.3 8.6
constexpr para <array> N3470 5 3.4 19.0 (2015)* 5.15 10.3 8.6
constexpr para <initializer_list>, <utility> y <tuple> N3471 5 3.4 19.0 (2015)* 5.15 10.3 8.6
std::integral_constant mejorado N3545 5 3.4 19.0 (2015)* 5.15 10.3 8.6
Literales definidos por el usuario para <chrono> y <string> N3642 5 3.4 19.0 (2015)* 5.15 10.3 8.6
Iteradores hacia adelante nulos N3644 5 (parcial)
10
3.4 19.0 (2015)* 5.15 10.3 8.6
std::quoted N3654 5 3.4 19.0 (2015)* 5.15 10.3 8.6
std::make_unique N3656 4.9 3.4 18.0* 5.15 10.3 8.6
Búsqueda asociativa heterogénea N3657 5 3.4 19.0 (2015)* 5.15 10.3 8.6
std::integer_sequence N3658 5 3.4 19.0 (2015)* 5.15 10.3 8.6
std::shared_timed_mutex N3659 5 3.4 19.0 (2015)* 5.15 10.3 8.6
std::exchange N3668 5 3.4 19.0 (2015)* 5.15 10.3 8.6
Corregir funciones miembro constexpr sin const N3669 5 3.4 19.0 (2015)* 5.15 10.3 8.6
std::get<T>() N3670 5 3.4 19.0 (2015)* 5.15 10.3 8.6
std::equal, std::is_permutation, std::mismatch de doble rango N3671 5 3.4 19.0 (2015)* 5.15 10.3 8.6
Característica de C++14
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar

Características de C++11

Características principales de C++11

Característica de C++11
 
Ponencia(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc
HP aCC
Digital Mars C++
Preprocesador de C99 [https://wg21.link/N1653 [HTTPS://WG21.LINK/N1653
[129] N1653]]
4.3 19.0 (2015)* (parcial)*
19.26*
4.1 11.1 2015 7.0 8.4  5.9 A.06.25
Aserción estática (static_assert) [https://wg21.link/N1720 [HTTPS://WG21.LINK/N1720
[130] N1720]]
4.3 2.9 16.0* 4.1 11.0 2015 7.0 8.4  5.13 A.06.25 8.52
Corchetes angulares [https://wg21.link/N1757 [HTTPS://WG21.LINK/N1757
[131] N1757]]
4.3 14.0* 4.1 11.0 2015 7.0 8.4  5.13
Declaraciones friend extendidas [https://wg21.link/N1791 [HTTPS://WG21.LINK/N1791
[132] N1791]]
4.7 2.9 16.0* (parcial)
18.0*
4.1 11.1*
12.0
2015 7.0 8.4  5.13 A.06.25
long long [https://wg21.link/N1811 [HTTPS://WG21.LINK/N1811
[133] N1811]]
14.0* 2015 7.0 8.4 
Soporte del compilador para rasgos de tipo [https://wg21.link/N1836 [HTTPS://WG21.LINK/N1836
[134] N1836]]
4.3 3.0 14.0* 4.0 10.0 2015 8.4  5.13 6.16
auto [https://wg21.link/N1984 [HTTPS://WG21.LINK/N1984
[135] N1984]]
4.4 16.0* 3.9 11.0 (v0.9)
12.0
2015 7.0 8.4  5.13 A.06.25
Constructores delegados [https://wg21.link/N1986 [HTTPS://WG21.LINK/N1986
[136] N1986]]
4.7 3.0 18.0* 4.7 14.0 2015 7.0 8.4  5.13 A.06.28
extern template [https://wg21.link/N1987 [HTTPS://WG21.LINK/N1987
[137] N1987]]
3.3 12.0* 3.9 9.0 2015 7.0 8.4  5.13 A.06.25
constexpr [https://wg21.link/N2235 [HTTPS://WG21.LINK/N2235
[138] N2235]]
4.6 3.1 19.0 (2015)* 4.6 13.0*
14.0
2015 7.0 8.4  5.13 A.06.28
Alias de plantillas [https://wg21.link/N2258 [HTTPS://WG21.LINK/N2258
[139] N2258]]
4.7 3.0 18.0* 4.2 12.1 2015 7.0 8.4  5.13 A.06.27
char16_t y char32_t [https://wg21.link/N2249 [HTTPS://WG21.LINK/N2249
[140] N2249]]
4.4 2.9 19.0 (2015)* 4.4 12.1*
14.0
2015 7.0 8.4  5.13 A.06.27 8.52
alignas [https://wg21.link/N2341 [HTTPS://WG21.LINK/N2341
[141] N2341]]
4.8 3.0 19.0 (2015)* 4.8 15.0 2015 7.0 8.6  5.13
alignof [https://wg21.link/N2341 [HTTPS://WG21.LINK/N2341
[142] N2341]]
4.5 2.9 19.0 (2015)* 4.8 15.0 2015 7.0 8.4  5.13
Funciones por defecto y eliminadas [https://wg21.link/N2346 [HTTPS://WG21.LINK/N2346
[143] N2346]]
4.4 3.0 18.0* 4.1 12.0 2015 7.0 8.4  5.13 A.06.25
Enumeraciones con ámbito [https://wg21.link/N2347 [HTTPS://WG21.LINK/N2347
[144] N2347]]
4.4 2.9 17.0* 4.0 13.0 2015 7.0 8.4  5.13 A.06.25
Operaciones atómicas [https://wg21.link/N2427 [HTTPS://WG21.LINK/N2427
[145] N2427]]
4.4 3.1 17.0* 13.0 2015 8.4  5.14
nullptr [https://wg21.link/N2431 [HTTPS://WG21.LINK/N2431
[146] N2431]]
4.6 2.9 16.0* 4.2 12.1 2015 7.0 8.4  5.13 A.06.27 8.52
Operadores de conversión explícitos [https://wg21.link/N2437 [HTTPS://WG21.LINK/N2437
[147] N2437]]
4.5 3.0 18.0* 4.4 13.0 2015 7.0 8.4  5.13 A.06.27
calificadores-ref [https://wg21.link/N2439 [HTTPS://WG21.LINK/N2439
[148] N2439]]
4.8.1 2.9 19.0 (2015)* 4.7 14.0 2015 7.0 8.4  5.13 A.06.28
Literales de cadena Unicode [https://wg21.link/N2442 [HTTPS://WG21.LINK/N2442
[149] N2442]]
4.4 3.0 19.0 (2015)* 4.7 11.0* 2015 7.0 8.4  5.7 A.06.28 8.52
Literales de cadena sin formato [https://wg21.link/N2442 [HTTPS://WG21.LINK/N2442
[150] N2442]]
4.5 18.0* 4.7 14.0 2015 7.0 8.4  5.13 A.06.28 8.52
Espacios de nombre en línea (inline) [https://wg21.link/N2535 [HTTPS://WG21.LINK/N2535
[151] N2535]]
4.4 2.9 19.0 (2015)* 4.5 14.0 2015 7.0 8.4  5.13 A.06.28
Constructores heredados [https://wg21.link/N2540 [HTTPS://WG21.LINK/N2540
[152] N2540]]
4.8 3.3 19.0 (2015)* 4.8 15.0 2015 7.0 8.4  5.13
Valores de retorno de función al final [https://wg21.link/N2541 [HTTPS://WG21.LINK/N2541
[153] N2541]]
4.4 2.9 16.0* 4.1 12.0 2015 7.0 8.4  5.13 A.06.27
Uniones irrestringidas [https://wg21.link/N2544 [HTTPS://WG21.LINK/N2544
[154] N2544]]
4.6 3.0 19.0 (2015)* 4.6 14.0* 2015 7.0 8.4  5.13 A.06.28
Plantillas variádicas [https://wg21.link/N2242 [HTTPS://WG21.LINK/N2242
[155]
N2242
[156]
[157] N2555]]
4.3 (N2242)
4.4
2.9 18.0* 4.3 (N2242)
4.3
12.1 2015 7.0 8.4  5.13 A.06.27
Expresión SFINAE [https://wg21.link/N2634 [HTTPS://WG21.LINK/N2634
[158] N2634]]
4.4 2.9 19.14* 4.2 12.1 2015 7.0 8.4 
Tipos locales y sin nombre como parámetros de plantillas [https://wg21.link/N2657 [HTTPS://WG21.LINK/N2657
[159] N2657]]
4.5 2.9 16.0* 4.2 12.0 2015 7.0 8.4  5.13 A.06.27
Almacenamiento local al hilo (thread_local) [https://wg21.link/N2659 [HTTPS://WG21.LINK/N2659
[160] N2659]]
4.4 (parcial)
4.8
3.3* 16.0* (parcial)
19.0 (2015)*
4.8 11.1 (parcial)
15.0*
2015 8.4  5.9 (parcial) 8.52 (parcial)
Inicialización y destrucción dinámica con concurrencia (estáticas mágicas) [https://wg21.link/N2660 [HTTPS://WG21.LINK/N2660
[161] N2660]]
4.3 2.9 19.0 (2015)* 11.1* 2015 8.4  5.13 A.06.25
Recolección de basura y detección de fugas basada en alcance. [https://wg21.link/N2670 [HTTPS://WG21.LINK/N2670
[162] N2670]]
 
Inicialización de lista [https://wg21.link/N2672 [HTTPS://WG21.LINK/N2672
[163] N2672]]
4.4 3.1 18.0* 4.5 13.0 (parcial)
14.0
2015 7.0 8.4  5.13 A.06.28
Inicialización de datos miembro no estáticos [https://wg21.link/N2756 [HTTPS://WG21.LINK/N2756
[164] N2756]]
4.7 3.0 18.0* 4.6 14.0 2015 7.0 8.4  5.13 A.06.28
Atributos [https://wg21.link/N2761 [HTTPS://WG21.LINK/N2761
[165] N2761]]
4.8 3.3 19.0 (2015)* 4.2 12.1 2015 7.0 8.4  5.13 A.06.27
Declaraciones enum adelantadas [https://wg21.link/N2764 [HTTPS://WG21.LINK/N2764
[166] N2764]]
4.6 3.1 17.0* 4.5 11.1 (parcial)
14.0
2015 7.0 8.4  5.13
Literales definidos por el usuario [https://wg21.link/N2765 [HTTPS://WG21.LINK/N2765
[167] N2765]]
4.7 3.1 19.0 (2015)* 4.8 15.0 2015 7.0 8.4  5.14
Referencias rvalue [https://wg21.link/N2118 [HTTPS://WG21.LINK/N2118
[168]
N2118
[169]
[170]
N2844
[171]
[172] CWG1138]]
4.3 (N2118)
4.5
2.9 16.0* (N2844)
17.0*
4.5 11.1 (N2118)
12.0 (N2844)
14.0
2015 7.0* 8.4  5.13 A.06.25
Expresiones lambda [https://wg21.link/N2550 [HTTPS://WG21.LINK/N2550
[173]
N2550
[174]
[175]
N2658
[176]
[177] N2927]]
4.5 3.1 16.0* (N2658)
17.0*
4.1 12.0 2015 7.0 8.4  5.13 A.06.25
Bucle for basado en rango [https://wg21.link/N2930 [HTTPS://WG21.LINK/N2930
[178] N2930]]
4.6 3.0 17.0* 4.5 13.0 2015 7.0 8.4  5.13 A.06.28
noexcept [https://wg21.link/N3050 [HTTPS://WG21.LINK/N3050
[179] N3050]]
4.6 3.0 19.0 (2015)* 4.5 14.0 2015 7.0 8.4  5.13 A.06.28
Funciones miembro de movimiento especiales por defecto [https://wg21.link/N3053 [HTTPS://WG21.LINK/N3053
[180] N3053]]
4.6 3.0 19.0 (2015)* 4.5 14.0 2015 7.0 8.4  5.13 A.06.25
override y final [https://wg21.link/N2928 [HTTPS://WG21.LINK/N2928
[181]
N2928
[182]
[183]
N3206
[184]
[185] N3272]]
4.7 2.9 14.0* (parcial)
17.0*
4.8 12.0 (N2928)
14.0
2015 7.0 8.4  5.13
decltype [https://wg21.link/N2343 [HTTPS://WG21.LINK/N2343
[186]
N2343
[187]
[188] N3276]]
4.3 (N2343)
4.8.1
2.9 16.0* 4.2 (N2343)
4.8
11.0 (N2343)
12.0
2015 7.0 8.4  5.13 A.06.25 8.52 (N2343)
Característica de C++11
 
Ponencia(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc
HP aCC
Digital Mars C++

Características de la biblioteca de C++11

Característica de C++11
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar
Rasgos de tipo N1836 4.3 3.0 14.0* 5.13 8.4
Recolección de basura (GC) y detección de fugas basada en alcance (soporte de biblioteca) N2670 6
(no-op)
3.4
(no-op)
19.0 (2015)*
(no-op)

(no-op)
Dinero, tiempo y manipuladores de E/S hexfloat N2071
N2072
5 3.8 19.0 (2015)* 5.15
Característica de C++11
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar

* - planea sobre el número de versión para ver las notas

Acrónimos

  • TS - Especificación técnica (del inglés Technical Specification).
  • ID - Informe de Defecto.

Referencias

Las listas de compatibilidad de cada proveedor (están más actualizadas que las tablas anteriores)

Morty Proxy This is a proxified and sanitized view of the page, visit original site.