Espacios de nombres
Variantes
Acciones

Apoyo de compiladores de C++

De cppreference.com
< cpp

Contenido


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.

[editar] Características de C++23

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

[editar] 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
Sufijo de literal para size_t (con signo) P0330R8 11 13
Hacer () más opcional para lambdas P1102R2 11 13 6.3
if consteval P1938R3 12 14 6.3
Eliminar apoyo para recolección de basura P2186R2 12
ID: Sintaxis de identificador de C++ usando el estándar Unicode anexo 31 P1949R7 12 14
ID: Admitir atributos duplicados P2156R1 11 13
Conversiones contextuales estrechantes en static_assert y constexpr if P1401R5 9 13 (parcial)*
14
Recorte de espacios en blanco antes del empalme de línea P2223R2
Hacer obligatorio la distribución del orden de declaración P1847R4
Eliminar el modo mezclado de la concatenación de literales de cadena P2201R1
Deducir P0847R7 6.3
auto(x) y auto{x} P0849R8 12
Cambiar ámbito del tipo de retorno al final de las lambdas P2036R3
#elifdef y #elifndef P2334R1 12 13
Variables no literal (y etiquetas y gotos) en las funciones constexpr P2242R3 12 6.3
Codificación consistente de literales de car��cter P2316R2
Juegos de caracteres y codificaciones P2314R4
Extender la instrucción de inicialización para admitir la declaración de alias P2360R0 12 14
Operador de índice/subíndice multidimensional P2128R6 12
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

[editar] 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 listado de pila P0881R7 P2301R1
<stdatomic.h> P0943R6 19.31*
std::is_scoped_enum P1048R1 11 12 19.30*
basic_string::contains(), basic_string_view::contains() P1679R3 11 12 19.30*
std::to_underlying P1682R3 11 13 19.30*
Relajar los requerimientos para time_point<>::clock P2212R2 N/A N/A
ID: std::visit() para clases derivadas de std::variant P2162R2 12 13 19.20**
19.30*
ID: Rangos prestados condicionalmente P2017R1 11 19.30*
ID: Reparación de los adaptadores de rangos de entrada y std::counted_iterator P2259R1 12 19.30*(parcial)*
19.31*
Proporcionar retralimentación del tamaño en la interfaz de Allocator P0401R6 19.30*
<spanstream> : string-stream con un búfer basado en std::span P0448R4 12 19.31*
std::out_ptr(), std::inout_ptr() P1132R8 19.30*
constexpr type_info::operator==() P1328R1 12
Constructores con un par de iteradores para std::stack y std::queue P1425R4 12 14 19.31*
Contextos de no-deducción para asignadores de memoria en las guías de deducción de los contenedores P1518R2 13 19.31*
ranges::starts_with() y ranges::ends_with() P1659R3 12
Prohibición de la construcción de std::basic_string y std::basic_string_view a partir de nullptr P2166R1 12 13 19.30*
std::invoke_r() P2136R3 12 19.31*
Constructor de rango para std::basic_string_view P1989R2 11 14 19.30*
Argumentos de plantilla por defecto para el constructor de reenvío de pair P1951R1 12 14 19.30*
Eliminar recolección de basura y detección de fugas basada en alcance (apoyo de la biblioteca) P2186R2 12 14 19.30*
ID: join_view debería unir todas las vistas de los rangos P2328R1 11.2 19.30*
ID: view no requiere default_initializable P2325R3 12 19.30*
ID: Los objetos de adaptador de rango vinculan los argumentos por valor P2281R1 11 19.29 (16.10)*
(parcial)*
19.31*
ID: constexpr para std::optional y std::variant P2231R1 12 13 (parcial)* 19.31*
ID: Mejoras a std::format() P2216R3 14 (parcial)* 19.32*
ID: lazy_split_view y rediseño de split_view P2210R2 12 19.31*
zip P2321R2
Sobrecargas de borrado heterogéneo para contenedores asociativos P2077R3 19.32*
std::byteswap() P1272R4 12 14 19.31*
Imprimir volatile T* P1147R1 12 14 19.31*
basic_string::resize_and_overwrite() P1072R10 12 14 19.31*
Operaciones monádicas para std::optional P0798R8 12 14 19.32*
std::move_only_function P0288R9 12 19.32*
Añadir una especificación noexcept condicional a std::exchange P2401R0 12 14 19.25*
Requerir que span y basic_string_view sean TriviallyCopyable P2251R1
Clarificar el estado de los “encabezados de C” P2340R1
ID: Corregir ranges::istream_view P2432R1 12 19.31*
ID: Añadir apoyo para los tipos formateables no const a std::format P2418R2
ID: Qué es una vista (view) P2415R2 14 19.31*
ID: Corregir el manejo de la configuración regional en los formateadores de chrono P2372R3 19.31*
ID: Limpieza de los tipos enteros P2393R1
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

[editar] Características de C++20

[editar] 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] P0409R2 8 6 19.22*

10.0.0*

5.1 2021.1 20.7
__VA_OPT__ P0306R4
P1042R1
8 (parcial)*
10 (parcial)*
9 19.25*

11.0.3*

5.1 2021.1 20.7
Inicializadores designados 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 P0428R2 8 9 19.22*

11.0.0*

5.1 2021.1 20.7
Inicializadores de miembros por defecto para campos de bits 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 P0702R1 8 6 19.14* 5.0 2021.1 20.7
Punteros a miembros calificados const& P0704R1 8 6 19.0 (2015)*

10.0.0*

5.1 2021.1 20.7
Conceptos 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 P0315R4 9 13 (parcial)*
14 (parcial)*
19.28 (16.8)*
Operador de comparación de tres vías P0515R3 10 8 (parcial)
10
19.20* 5.1 2021.1 20.7
ID: Simplificar captura de lambda implícita P0588R1 8 19.24* 5.1 2021.1 20.7
Instrucciones de inicialización para bucle for basado en rango}} P0614R1 9 8 19.25*

11.0.0*

6.0 20.11
Lambdas sin estado construibles y asignables por defecto 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) P0641R2 9 8 19.0 (2015)*

10.0.1*

5.1 2021.1 20.7
Verificación de acceso en especializaciones 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 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 P0859R0 5.2 (parcial)*
9
8 19.27* (parcial)*
19.31*
Atributos [[likely]] y [[unlikely]] P0479R5 9 12 19.26*

13.0.0*

5.1 20.7
Hacer typename más opcional P0634R3 9 19.29 (16.10)* 5.1 20.7
Expansión de paquete en captura de inicialización (init-capture) de lambda P0780R2 9 9 19.22*

11.0.3*

6.1 20.11
Atributo [[no_unique_address]] P0840R2 9 9 19.28 (16.9)**

11.0.3*

5.1 2021.1 20.7
Funciones miembro especiales condicionalmente triviales 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 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 P0962R1 8 8 19.25* 5.1 2021.1 20.7
ID: Permitir vínculos estructurados para miembros accesibles P0969R0 8 8 19.21*

10.0.1*

5.1 2021.1 20.7
Destruir el operador delete P0722R3 9 6 19.27*

10.0.0*

6.1 20.11
Tipos clase en parámetros de plantilla de no tipo P0732R2 9 12 (parcial) 19.26*(parcial)*
19.28 (16.9)*
6.2
Poner en desuso la captura implícita de this mediante [=] P0806R2 9 7 19.22* 5.1 20.7
explicit(bool) P0892R2 9 9 19.24*

11.0.3*

5.1 2021.1 20.7
Integrar macros de prueba de característica P0941R2 5 3.4 19.15* (parcial)
19.20*
5.0 2021.1 20.7
Prohibir agregados con constructores declarados por el usuario P1008R1 9 8 19.20*

10.0.1*

5.1 2021.1 20.7
Función virtual constexpr P1064R0 9 9 19.28 (16.9)*

11.0.3*

5.1 2021.1 20.7
Mejoras de consistencia para comparaciones P1120R0 10 8 (parcial)
10
19.22*

10.0.1* (parcial)

5.1 20.7
char8_t P0482R6 9 7* 19.22*

10.0.0*

5.1 2021.1 20.7
std::is_constant_evaluated() P0595R2 9 9 19.25*

11.0.3*

5.1 19.1
Bloques try-catch constexpr P1002R1 9 8 19.25*

10.0.1*

5.1 20.7
Funciones inmediatas (consteval) 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 P1094R2 9 8 19.27*

10.0.1*

5.1 2021.1 20.7
Aún otro enfoque para declaraciones restringidas P1141R2 10 10 19.26* (parcial)
19.28 (16.9)*
6.1 20.11
Enteros con signo son complemento a dos P1236R1 9 9

11.0.3*

N/A N/A yes
dynamic_cast constexpr typeid polimórfico en expresiones constantes 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 P1330R0 9 9 19.10*

11.0.3*

5.1 2021.1 20.7
Corrutinas 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 P0960R3 10 19.28 (16.8)* 5.1 2021.1 20.7
ID: Deducción de tamaños de arrays en expresiones new P1009R2 11 9 19.27*

11.0.3*

5.1 2021.1 20.7
Módulos 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 P1041R4
P1139R2
10 19.0 (2015)* (P1041R4)
19.26* (P1139R2)
N/A
<=> != == P1185R2 10 10 19.22* 5.1 2021.1 20.7
ID: Funciones explícitamente marcadas como =default con diferentes especificaciones de excepción 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 P1091R3
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 P0388R4 10 14 19.27* 6.0 2021.5 20.11
Operaciones de contenedores constexpr P0784R7 10 10 19.28 (16.9)* 6.0 2021.5 20.11
Poner en desuso algunos usos de volatile P1152R4 10 10 19.27* 6.0 2021.5 20.11
constinit P1143R2 10 10 19.29 (16.10)* 6.1 20.11
Poner en desuso el operador coma en índices/subíndices P1161R3 10 9 19.25*

11.0.3*

6.0 2021.5 20.11
Atributo [[nodiscard]] con mensaje P1301R4 10 9 19.25*

11.0.3*

6.0 2021.5 20.11
Inicialización trivial por defecto en funciones constexpr P1331R2 10 10 19.27* 6.1 20.11
Declaración asm no evaluada en funciones constexpr P1668R1 10 10 19.28 (16.9)* 6.1 20.11
using enum P1099R5 11 13 19.24* 6.3
Sintetizar la comparación de tres vías para una categoría de comparación especificada P1186R3 11 10 19.24* 6.0 2021.5 20.11
ID: Atributo [[nodiscard]] para constructores 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 P1814R0 10 19.27*
Deducción de argumentos de plantillas de clase para agregados P1816R0
P2082R1
10(P1816R0)
11(P2082R1)
19.27*
ID: Movimiento implícito para objetos más locales y referencias r-valor P1825R0 11* 13 19.24* 6.0 2021.5 20.11
Permitir hacer comparaciones por defecto por valor P1946R0 10 10 19.25* 6.1 20.11
Eliminar std::weak_equality y std::strong_equality P1959R0 10 10 19.25* 6.1 20.11
Inconsistencias con parámetros de plantilla sin tipo P1907R1 10 (parcial)
11
12 (parcial) 19.26* 6.2
ID: Pseudodestructores terminan los tiempos de vida de los objetos P0593R6 11 11 N/A N/A
ID: Convertir de T* a bool debe considerarse de estrechamiento 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

[editar] 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

[editar] Características de C++17

[editar] 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 N3922 6 3.9 19.12* 4.14 19.0 10.3 19.1 11.0
static_assert sin mensaje N3928 6 2.5 19.10* 4.12 18.0 10.3 17.7 11.0
typename en un parámetro de plantilla de plantilla N4051 5 3.5 19.0 (2015)* 4.10.1 17.0 10.3 17.7 Sí*
Eliminar trígrafos N4086 5 3.5 16.0* 5.0 10.3 19.1 11.0
Definición de espacios de nombre anidados N4230 6 3.6 19.0 (Actualización 3)* 4.12 17.0 10.3 17.7 11.0
Atributos para espacios de nombre y enumeradores N4266 4.9 (partial)*
6
3.6 19.0 (2015)* 4.11 17.0 10.3 17.7 11.0
Literales de carácter u8 N4267 6 3.6 19.0 (2015)* 4.11 17.0 10.3 17.7 11.0
Permitir evaluación constante para todos los argumentos de plantilla de no tipo N4268 6 3.6 19.12* 5.0 19.0.1 10.3 19.1 11.0
Expresiones de pliegue N4295 6 3.6 19.12* 4.14 19.0 10.3 18.1 11.0
Expresiones de pliegue unarias y paquetes de parámetros vacíos P0036R0 6 3.9 19.12* 4.14 19.0 10.3 19.1 11.0
Eliminar uso obsoleto de la palabra clave register P0001R1 7 3.8 19.11* 4.13 18.0 10.3 17.7 11.0
Remover operator++(bool) obsoleto P0002R1 7 3.8 19.11* 4.13 18.0 10.3 17.7 11.0
Hacer las especificaciones de excepciones parte del sistema de tipos P0012R1 7 4 19.12* 4.14 19.0 10.3 19.1 11.0
Inicialización de agregados con clases base P0017R1 7 3.9 19.14* 5.0 19.0.1 10.3 19.1 11.0
__has_include en condicionales del preprocesador P0061R1 5 19.11* 4.13 18.0 10.3 17.7 11.0
ID: Nueva especificación para constructores heredados (ID 1941 et al) P0136R1 7 3.9 19.14* 6.1 10.3 19.1 11.0
Captura de lambda de *this P0018R3 7 3.9 19.11* 4.14 19.0 10.3 18.1 11.0
Inicialización de lista directa de enumeraciones P0138R2 7 3.9 19.11* 4.14 18.0 10.3 19.1 11.0
Expresiones lambda constexpr P0170R1 7 5 19.11* 4.14 19.0 10.3 18.1 11.0
Tipos que difieren en begin y end en bucle for basado en rango P0184R0 6 3.9 19.10* 4.12 18.0 10.3 17.7 11.0
Atributo [[fallthrough]] P0188R1 7 3.9 19.10* 4.13 18.0 10.3 17.7 11.0
Atributo [[nodiscard]] P0189R1 7 3.9 19.11* 4.13 18.0 10.3 17.7 11.0
Atributo [[maybe_unused]] P0212R1 7 3.9 19.11* 4.13 18.0 10.3 17.7 11.0
Literales de punto flotante hexadecimales P0245R1 3.0 19.11* 4.13 18.0 10.3 17.7 11.0
Usar atributos de espacios de nombres sin repetición P0028R4 7 3.9 19.11* 4.13 18.0 10.3 17.7 11.0
Asignación de memoria dinámica para datos sobrealineados P0035R4 7 4 19.12*

10.0.0*

4.14 19.0 10.3 19.1 11.0
Deducción de argumentos de plantillas de clase P0091R3 7 5 19.14* 5.0 19.0.1 10.3 19.1 11.0
Parámetros de plantilla de no tipo con el tipo auto P0127R2 7 4 19.14* 5.0 19.0.1 10.3 19.1 11.0
Elisión de copia obligatoria P0135R1 7 4 19.13* 5.0 19.0.1 10.3 19.1 11.0
Reemplazo de objetos de clase que contienen miembros de referencia P0137R1 7 6 19.14* 5.0 10.3 19.1 11.0
Orden de evaluación de expresiones más estricto P0145R3 7 4 19.14* 5.0 19.0.1 10.3 19.1 11.0
Vínculos estructurados P0217R3 7 4 19.11* 4.14 19.0 10.3 18.1 11.0*
Ignorar atributos desconocidos P0283R2 3.9 19.11* 4.13 18.0 10.3 17.7 11.0
Instrucciones constexpr if P0292R2 7 3.9 19.11* 4.14 19.0 10.3 18.1 11.0
if y switch con un inicializador P0305R1 7 3.9 19.11* 4.14 18.0 10.3 18.1 11.0
Variables en línea P0386R2 7 3.9 19.12* 4.14 19.0 10.3 18.1 11.0
Eliminar especificaciones de excepciones dinámicas P0003R5 7 4 19.10* 4.14 19.0 10.3 19.1 11.0
Expansión de paquetes en declaraciones using P0195R2 7 4 19.14* 5.0 19.0 10.3 19.1 11.0
ID: Coincidencia de argumentos de plantilla de plantilla excluye plantillas compatibles P0522R0 7 4 19.12* 5.0 19.0.1 10.3 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

[editar] 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 (Actualización 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 (Actualización 2)* N/A 10.3
Rasgos de tipo de plantillas de variable P0006R0 7 3.8 19.0 (Actualización 2)* N/A 10.3
Rasgos de tipo para operadores lógicos P0013R1 6 3.8 19.0 (Actualización 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 (Actualización 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 (Actualización 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.

[editar] Características de C++14

[editar] 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 N3323 4.9 3.4 18.0* 4.9 16.0 13.1.2* 5.15 10.3 8.6 16.1 9.0
Literales binarios N3472 4.3 (GNU)
4.9
2.9 19.0 (2015)* 4.10 11.0 13.1.2* 5.14 10.3 8.6 2015 9.0
decltype(auto), Deducción de tipo de retorno para funciones normales N3638 4.8 (parcial)*
4.9
3.3 (parcial)*
3.4
19.0 (2015)* 4.9 15.0 13.1.2* 5.15 10.3 8.6 16.1 9.0
Capturas de lambdas inicializadas/generalizadas (init-capture) N3648 4.5 (parcial)
4.9
3.4 19.0 (2015)* 4.10 15.0 16.1.1* 5.15 10.3 8.6 16.1 9.0
Expresiones lambda genéricas N3649 4.9 3.4 19.0 (2015)* 4.10 16.0 13.1.2* 5.15 10.3 8.6 16.1 9.0
Plantillas de variable N3651 5 3.4 19.0 (Actualización 2)* 4.11 17.0 13.1.2* 5.15 10.3 8.6 17.4 9.0
constexpr extendidas N3652 5 3.4 19.10* 4.11 17.0 13.1.2* 5.15 10.3 8.6 17.4 9.0
Agregados con inicializadores de miembros (NSDMI) N3653 5 3.3 19.10* 4.9 16.0 16.1.1* 5.14 10.3 8.6 16.1 9.0
Omitir/extender asignaciones de memoria N3664 N/A 3.4 N/A N/A N/A N/A N/A 10.3 8.6 17.4 N/A
Atributo [[deprecated]] N3760 4.9 3.4 19.0 (2015)* 4.9 15.0*
16.0
13.1.2* 5.14 10.3 8.6 16.1 9.0
Desasignación con tamaño N3778 5 3.4 19.0 (2015)* 4.10.1 17.0 16.1.1* 5.14 10.3 8.6 16.1
Comilla sencilla como separador de dígitos N3781 4.9 3.4 19.0 (2015)* 4.10 16.0 13.1.2* 5.14 10.3 8.6 2015 9.0
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

[editar] 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 (Actualización 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

[editar] Características de C++11

[editar] 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 N1653 4.3 19.0 (2015)* (parcial)*
19.26*
4.1 11.1 10.1 5.9 8.4 2015 7.0 A.06.25
Aserción estática (static_assert) N1720 4.3 2.9 16.0* 4.1 11.0 11.1 5.13 8.4 2015 7.0 A.06.25 8.52
Corchetes angulares N1757 4.3 14.0* 4.1 11.0 12.1 5.13 8.4 2015 7.0
Declaraciones friend extendidas N1791 4.7 2.9 16.0* (parcial)
18.0*
4.1 11.1*
12.0
11.1 5.13 8.4 2015 7.0 A.06.25
long long N1811 14.0* 8.4 2015 7.0
Soporte del compilador para rasgos de tipo N1836 4.3 3.0 14.0* 4.0 10.0 13.1.3 5.13 8.4 2015 6.16
auto N1984 4.4 16.0* 3.9 11.0 (v0.9)
12.0
11.1 5.13 8.4 2015 7.0 A.06.25
Constructores delegados N1986 4.7 3.0 18.0* 4.7 14.0 11.1 5.13 8.4 2015 7.0 A.06.28
extern template N1987 3.3 12.0* 3.9 9.0 11.1 5.13 8.4 2015 7.0 A.06.25
constexpr N2235 4.6 3.1 19.0 (2015)* 4.6 13.0*
14.0
12.1*
13.1
5.13 8.4 2015 7.0 A.06.28
Alias de plantillas N2258 4.7 3.0 18.0* 4.2 12.1 13.1.1* 5.13 8.4 2015 7.0 A.06.27
char16_t y char32_t N2249 4.4 2.9 19.0 (2015)* 4.4 12.1*
14.0
13.1.1* 5.13 8.4 2015 7.0 A.06.27 8.52
alignas N2341 4.8 3.0 19.0 (2015)* 4.8 15.0 13.1.2* 5.13 8.6 2015 7.0
alignof N2341 4.5 2.9 19.0 (2015)* 4.8 15.0 13.1.2* 5.13 8.4 2015 7.0
Funciones por defecto y eliminadas N2346 4.4 3.0 18.0* 4.1 12.0 13.1 5.13 8.4 2015 7.0 A.06.25
Enumeraciones con ámbito N2347 4.4 2.9 17.0* 4.0 13.0 12.1 5.13 8.4 2015 7.0 A.06.25
Operaciones atómicas N2427 4.4 3.1 17.0* 13.0 13.1.2* 5.14 8.4 2015
nullptr N2431 4.6 2.9 16.0* 4.2 12.1 13.1 5.13 8.4 2015 7.0 A.06.27 8.52
Operadores de conversión explícitos N2437 4.5 3.0 18.0* 4.4 13.0 12.1 5.13 8.4 2015 7.0 A.06.27
calificadores-ref N2439 4.8.1 2.9 19.0 (2015)* 4.7 14.0 13.1.2* 5.13 8.4 2015 7.0 A.06.28
Literales de cadena Unicode N2442 4.4 3.0 19.0 (2015)* 4.7 11.0* 10.1*
13.1.1*
5.7 8.4 2015 7.0 A.06.28 8.52
Literales de cadena sin formato N2442 4.5 18.0* 4.7 14.0 13.1.1*, excepto AIX xlC 13.1.3 5.13 8.4 2015 7.0 A.06.28 8.52
Espacios de nombre en línea (inline) N2535 4.4 2.9 19.0 (2015)* 4.5 14.0 11.1 5.13 8.4 2015 7.0 A.06.28
Constructores heredados N2540 4.8 3.3 19.0 (2015)* 4.8 15.0 13.1.1* 5.13 8.4 2015 7.0
Valores de retorno de función al final N2541 4.4 2.9 16.0* 4.1 12.0 12.1 5.13 8.4 2015 7.0 A.06.27
Uniones irrestringidas N2544 4.6 3.0 19.0 (2015)* 4.6 14.0* 13.1.2* 5.13 8.4 2015 7.0 A.06.28
Plantillas variádicas N2242
N2555
4.3 (N2242)
4.4
2.9 18.0* 4.3 (N2242)
4.3
12.1 11.1 (N2242) 5.13 8.4 2015 7.0 A.06.27
Expresión SFINAE N2634 4.4 2.9 19.14* 4.2 12.1 8.4 2015 7.0
Tipos locales y sin nombre como parámetros de plantillas N2657 4.5 2.9 16.0* 4.2 12.0 13.1.2* 5.13 8.4 2015 7.0 A.06.27
Almacenamiento local al hilo (thread_local) N2659 4.4 (parcial)
4.8
3.3* 16.0* (parcial)
19.0 (2015)*
4.8 11.1 (parcial)
15.0*
10.1 (parcial)*
13.1.2 (parcial)*
5.9 (parcial) 8.4 2015 8.52 (parcial)
Inicialización y destrucción dinámica con concurrencia (estáticas mágicas) N2660 4.3 2.9 19.0 (2015)* 11.1* 13.1.2* 5.13 8.4 2015 A.06.25
Recolección de basura y detección de fugas basada en alcance. N2670
Inicialización de lista N2672 4.4 3.1 18.0* 4.5 13.0 (parcial)
14.0
13.1.2* 5.13 8.4 2015 7.0 A.06.28
Inicialización de datos miembro no estáticos N2756 4.7 3.0 18.0* 4.6 14.0 13.1.2* 5.13 8.4 2015 7.0 A.06.28
Atributos N2761 4.8 3.3 19.0 (2015)* 4.2 12.1 13.1.1* 5.13 8.4 2015 7.0 A.06.27
Declaraciones enum adelantadas N2764 4.6 3.1 17.0* 4.5 11.1 (parcial)
14.0
12.1 5.13 8.4 2015 7.0
Literales definidos por el usuario N2765 4.7 3.1 19.0 (2015)* 4.8 15.0 13.1.2* 5.14 8.4 2015 7.0
Referencias rvalue N2118
N2844
CWG1138
4.3 (N2118)
4.5
2.9 16.0* (N2844)
17.0*
4.5 11.1 (N2118)
12.0 (N2844)
14.0
12.1 5.13 8.4 2015 7.0* A.06.25
Expresiones lambda N2550
N2658
N2927
4.5 3.1 16.0* (N2658)
17.0*
4.1 12.0 13.1.2* 5.13 8.4 2015 7.0 A.06.25
Bucle for basado en rango N2930 4.6 3.0 17.0* 4.5 13.0 13.1.2* 5.13 8.4 2015 7.0 A.06.28
noexcept N3050 4.6 3.0 19.0 (2015)* 4.5 14.0 13.1.1* 5.13 8.4 2015 7.0 A.06.28
Funciones miembro de movimiento especiales por defecto N3053 4.6 3.0 19.0 (2015)* 4.5 14.0 5.13 8.4 2015 7.0 A.06.25
override y final N2928
N3206
N3272
4.7 2.9 14.0* (parcial)
17.0*
4.8 12.0 (N2928)
14.0
13.1.1* 5.13 8.4 2015 7.0
decltype N2343
N3276
4.3 (N2343)
4.8.1
2.9 16.0* 4.2 (N2343)
4.8
11.0 (N2343)
12.0
11.1 (N2343) 5.13 8.4 2015 7.0 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++

[editar] 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

[editar] Acrónimos

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

[editar] Referencias

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