Espacios de nombres
Variantes
Acciones

Soporte de compiladores de C++

De cppreference.com
< cpp
 
 
Lenguaje C++
Temas generales
Control de flujo
Instrucciones de ejecución condicionales
Instrucciones de iteración (bucles)
Declaraciones de salto
Funciones
Declaración de funciones
Declaración de funciones lambda
Especificador inline
Especificación de excepciones (hasta C++20)
Especificador noexcept (C++11)
Excepciones
Espacios de nombres
Tipos
Especificadores
decltype (C++11)
auto (C++11)
alignas (C++11)
Especificadores de duración de almacenamiento
Inicialización
Expresiones
Representaciones alternas
Literales
Booleanos - Enteros - De punto flotante
De carácter - De cadena - nullptr (C++11)
Definidos por el usuario (C++11)
Utilidades
Atributos (C++11)
Tipos
Declaración de typedef
Declaración de alias de tipo (C++11)
Conversiones
Conversiones implícitas - Conversiones explícitas
static_cast - dynamic_cast
const_cast - reinterpret_cast
Asignación de memoria
Clases
Propiedades de funciones específicas de la clase
Funciones miembro especiales
Plantillas
Misceláneos
 

Contenido


La siguiente table presenta el soporte 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++2b

Observa que esta lista puede cambiar a medida que el borrador de C++2b evoluciona.



[editar] Características de C++20

[editar] Características centrales del lenguaje C++20

Característica de c++20
 
Ponencia(s)
 
Versión
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc
Permitir captura de lambda [=, this] P0409R2 c++20-lang 8 6 19.22* 5.1
__VA_OPT__ P0306R4
P1042R1
c++20-lang 8(parcial)*
10 (parcial)*
9 19.25* 5.1
Inicializadores designados P0329R4 c++20-lang 4.7 (parcial)*
8
3.0 (parcial)*
10
19.21* 5.1
Lista de parámetros de plantilla para lambdas genéricas P0428R2 c++20-lang 8 9 19.22* 5.1
Inicializadores de miembros por defecto para campos de bits P0683R1 c++20-lang 8 6 19.25* 5.1
Constructores con inicialización de lista en la deducción de argumentos de plantillas de clase P0702R1 c++20-lang 8 6 19.14* 5.0
Punteros a miembros calificados const& P0704R1 c++20-lang 8 6 19.0* 5.1
Conceptos P0734R0 c++20-lang 6
(sólo TS)
10
10 19.23* (parcial)*
Lambdas en contextos no evaluados P0315R4 c++20-lang 9
Operación de comparación de tres vías P0515R3 c++20-lang 10 8 (parcial)
10
19.20* 5.1
DR: Simplificar captura de lambda implícita P0588R1 c++20-lang 8 19.24* 5.1
Instrucciones de inicialización para bucle for basado en rango P0614R1 c++20-lang 9 8 19.25* 6.0
Lambdas sin estado construibles y asignables por defecto P0624R2 c++20-lang 9 8 19.22* 5.1
Coincidencia errónea const con constructor de copia por defecto P0641R2 c++20-lang 9 8 19.21* (parcial) 5.1
Comprobación de acceso en especializaciones P0692R1 c++20-lang 8 (parcial) 5.1
Búsqueda dependiente de argumentos (ADL) y plantillas de función que no están visibles P0846R0 c++20-lang 9 9 19.21* 5.1
Creación menos entusiasta de funciones constexpr P0859R0 c++20-lang 5.2 (parcial)*
9
Atributos [[likely]] y [[unlikely]] P0479R5 c++20-lang 9 5.1
Hacer typename más opcional P0634R3 c++20-lang 9 5.1
Expansión de paquetes en captura de inicialización (init-capture) de lambda P0780R2 c++20-lang 9 9 19.22*
Atributo [[no_unique_address]] P0840R2 c++20-lang 9 9 5.1
DR: Relajar las reglas para encontrar un punto de personalización para vínculos estructurados P0961R1 c++20-lang 8 8 19.21* 5.1
DR: Relajar las reglas para encontrar un punto de personalización para bucle for basado en rango P0962R1 c++20-lang 8 5.1
DR: Permitir vínculos estructurados para miembros accesibles P0969R0 c++20-lang 8 8 19.21* 5.1
Destruir el operador delete P0722R3 c++20-lang 9 6 6.1
Tipos de clase en parámetros de plantilla de no tipo P0732R2 c++20-lang 9
Poner en desuso la captúra implícita de this mediante [=] P0806R2 c++20-lang 9 19.22* 5.1
explicit(bool) P0892R2 c++20-lang 9 9 19.24* 5.1
Integrar macros de prueba de característica P0941R2 c++20-lang 5 3.4 19.15* (parcial)
19.20*
5.0
Prohibir agregados con constructores declarados por el usuario P1008R1 c++20-lang 9 8 19.20* 5.1
Función virtual constexpr P1064R0 c++20-lang 9 9 5.1
Mejoras de consistencia para comparaciones P1120R0 c++20-lang 10 8 (parcial)
10
19.22* 5.1
char8_t P0482R6 c++20-lang 9 7 19.22* 5.1
std::is_constant_evaluated() P0595R2 c++20-lang 9 9 19.25* 5.1 19.1
Bloques try-catch constexpr P1002R1 c++20-lang 9 8 19.25* 5.1
Funciones inmediatas P1073R3 c++20-lang 10 (parcial)* 5.1
Espacio de nombres en línea anidados P1094R2 c++20-lang 9 8 5.1
Aún otro enfoque para declaraciones constreñidas declarations P1141R2 c++20-lang 10
Enteros con signo son complemento a dos P1236R1 c++20-lang 9 9
dynamic_cast constexpr y typeid polifórmico P1327R1 c++20-lang 10 9 5.1
Cambiar el miembro activo de una unión dentro de constexpr P1330R0 c++20-lang 9 9 19.10* 5.1
Corutinas P0912R5 c++20-lang 10 8 (parcial) 19.25*(parcial) 5.1
Inicialización de agregados usando paréntesis P0960R3 c++20-lang 10 5.1
DR: Deducción de tamaños de arrays en expresiones-new P1009R2 c++20-lang 9 5.1
Módulos P1103R3 c++20-lang 8 (parcial) 19.25*(parcial)
Requerimientos de Unicode más firmes P1041R4
P1139R2
c++20-lang 10 19.0* (P1041R4) N/A
<=> != == P1185R2 c++20-lang 10 10 19.22* 5.1
DR: Funciones explícitamente marcadas como default con diferentes especificaciones de excepciones P1286R2 c++20-lang 10 9 5.1
Captura de lambdas y especificadores de clase de almacenamiento de vínculos estructurados P1091R3
P1381R1
c++20-lang 10 8 (parcial) 5.1
Permitir conversiones a arrays de límite desconocido P0388R4 c++20-lang 10 6.0
Operaciones de contenedores constexpr P0784R7 c++20-lang 10 10 6.0
Poner en deuso algunos usos de volatile P1152R4 c++20-lang 10 10 6.0
constinit P1143R2 c++20-lang 10 10
Poner en desuso el operador coma en índices P1161R3 c++20-lang 10 9 19.25* 6.0
Atributo [[nodiscard]] con mensaje P1301R4 c++20-lang 10 9 19.25* 6.0
Inicialización trivial por defecto en funciones constexpr P1331R2 c++20-lang 10 10 6.0
Declaración asm no evaluada en funciones constexpr P1668R1 c++20-lang 10 10 6.1
using enum P1099R5 c++20-lang 19.24*
Sintetizar comparación de tres vías para una categoría de comparación especificada P1186R3 c++20-lang 10 10 19.24* 6.0
DR: Atributo [[nodiscard]] para constructores P1771R1 c++20-lang 10 9 19.24* 6.0
Deducción de argumentos de plantillas de clase para alias de plantilla P1814R0 c++20-lang 10
Deducción de argumentos de plantillas de clase para agregados P1816R0 c++20-lang 10
DR: Movimiento implícito para objetos más locales y referencias rvalue P1825R0 c++20-lang 19.24* 6.0
Permitir hacer comparaciones por defecto por valor P1946R0 c++20-lang 10 19.25* 6.1
Eliminar std::weak_equality y std::strong_equality P1950R0 c++20-lang 10
Inconsistencias con parámetros de plantilla de no tipo P1907R1 c++20-lang 9
DR: Convertir de T* a bool debe considerarse de estrechamiento P1957R2 c++20-lang 10*


Característica de c++20
 
Ponencia(s)
 
GCC
Clang
MSVC
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*


Extender std::make_shared() para soportar arrays P0674R1
Tipo atómico de punto flotante P0020R6 10 19.22*


Flujo de salida sincronizado con búfer P0053R7


constexpr para <algorithm> y <utility> P0202R3 10 8 (parcial) 19.26*


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


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


Comprobación de prefijo y sufijo de cadenas P0457R2 9 6 19.21*


Soporte de la biblioteca para operator<=> <compare> P0768R1 10 7 (parcial) 19.20* (parcial)


std::remove_cvref P0550R2 9 6 19.20*


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


Usar std::move en algoritmos numéricos P0616R0 9 19.23*


Utilidad para convertir un puntero a un puntero sin formato P0653R2 8 6 19.22*


std::shared_ptr y std::weak_ptr atómicos P0718R2
std::span P0122R7 10 7 19.26*


Calendario y huso horario P0355R7 7 (parcial)


<version> P0754R2 9 7 19.22*


Comparar contenedores no ordenados P0809R0 16.0*


Requerimientos de ConstexprIterator P0858R0 9 19.11*


std::basic_string::reserve() no debe encogerse P0966R1 8 19.25*
std::atomic_ref P0019R8 10


Función miembro contains() de contenedores asociativos P0458R2 9 19.21*


DR: Construcción pieza a pieza de la elisión de copia obligatoria P0475R1 9


std::bit_cast() P0476R2 19.27*


Operaciones enteras de la potencia al cuadrado P0556R3 P1956R1 9 (P0556R3)
10 (P1956R1)
19.25* (P0556R3)
19.27* (P1956R1)


Mejorar el valor de retorno de algoritmos similares a erase P0646R1 9 10 19.21*


std::destroying_delete P0722R3 9 9


std::is_nothrow_convertible P0758R1 9 9 19.23*


Añadir shift a <algorithm> P0769R2 10 19.21*


Constexpr para std::swap() y funciones relacionadas con swap P0879R0 10 19.26*


std::type_identity P0887R1 9 8 19.21*


Biblioteca de conceptos P0898R3 10 19.23*


Operadores de comparación constexpr para std::array P1023R0 10 8 19.27*
std::unwrap_ref_decay y std::unwrap_reference P0318R1 9 8 19.21*


std::bind_front() P0356R5 9 19.25*


std::reference_wrapper para tipos incompletos P0357R3 9 8 19.26*


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


Soporte de la biblioteca para char8_t P0482R6 9 19.22*


Funciones de utilidad para implementar uses-allocator construcción P0591R4 9


DR: std::variant y std::optional deberían progapar la trivialidad de copia/movimimiento P0602R4 8.3 8 19.11*


Un constructor de conversión de std::variant sano P0608R3 10 9


El constructor de movmiento de std::function debería ser noexcept P0771R1 7.2 6 19.22*


La Propuesta de una Sola Biblioteca de Rangos P0896R4 10


Búsqueda heterogénea para contenedores no ordenados P0919R3 P1690R1 19.23* (P0919R3)
19.25* (P1690R1)


<chrono> zero(), min(), y max() deberían ser noexcept P0972R0 9 8 19.14*


constexpr en std::pointer_traits P1006R1 9 8 19.26*


std::assume_aligned() P1007R3 9


Eliminar operadores de comparación de std::span P1085R2 10 8


Hacer la propagación de asignadores con estado más consistente para operator+(basic_string) P1165R1 10 19.26*


Borrado de contenedores consistente P1209R0 P1115R3 9 (P1209R0)
10 (P1115R3)
8 (P1209R0) 19.25* (P1209R0)
19.27* (P1115R3)
std::lerp() y std::midpoint() P0811R3 9 9


Mejoras de usabilidad para std::span P1024R3 10 9


DR: Hacer create_directory() intuitiva P1164R1 8.3 19.20*


std::ssize() y medida sin signo para std::span P1227R2 10 9 19.25*


Rasgos de tipo para arrays (is_unbounded_array)is_bounded_array P1357R1 9 9 19.25*
std::to_array() P0325R4 10 10 19.25*


Acceso eficiente al búfer de std::basic_stringbuf P0408R7


Compatibilidad de distribución y rasgos de tipo de interconvertibilidad de punteros P0466R5


Operaciones de bits P0553R4 9 9 19.25*


Constantes matemáticas P0631R8 10 19.25*


Formato de texto P0645R10


std::stop_token y std::jthread P0660R10 10


std::allocator constexpr y utilidades relacionadas P0784R7 10


std::string constexpr P0980R1


std::vector constexpr P1004R2


Adaptadores de rango de entrada P1035R7 10


std::invoke() constexpr y utilidades relacionadas P1065R2 10


Espera y notificación atómica, std::counting_semaphore, std::latch y std::barrier P1135R6


std::source_location P1208R6 7 (sólo TS)


Añadir <=> a la biblioteca estándar P1614R2 10 (parcial)
constructor constexpr por defecto de std::atomic y std::atomic_flag P0883R2 19.26*
constexpr para algoritmos numéricos P1645R1 10 19.26*
Comparaciones enteras seguras P0586R2 10
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] Acrónimos

  • TS - Especificación técnica (del inglés Technical Specification).
  • DR - Informe de defecto (del inglés Defect Report).

[editar] Características de C++17

[editar] Características centrales del lenguage C++17

Característica de c++17
 
Ponencia(s)
 
Versión
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc
Nuevas reglas de auto para inicialización de lista directa N3922 c++17-lang 5 3.8 19.0* 4.10.1 17.0 10.3 17.7
static_assert sin mensaje N3928 c++17-lang 6 2.5 19.10* 4.12 18.0 10.3 17.7
typename en un parámetro de plantilla de plantilla N4051 c++17-lang 5 3.5 19.0* 4.10.1 17.0 10.3 17.7
Eliminar trígrafos N4086 c++17-lang 5 3.5 16.0* 5.0 10.3 19.1
Definición de espacios de nombre anidados N4230 c++17-lang 6 3.6 19.0* 4.12 17.0 10.3 17.7
Atributos para espacios de nombre y enumeradores N4266 c++17-lang 4.9 (partial)*
6
3.6 19.0* 4.11 17.0 10.3 17.7
Literales de carácter u8 N4267 c++17-lang 6 3.6 19.0* 4.11 17.0 10.3 17.7
Permitir evaluación constante para todos los argumentos de plantilla de no tipo N4268 c++17-lang 6 3.6 19.12* 5.0 19.0.1 10.3 19.1
Expresiones de pliegue N4295 c++17-lang 6 3.6 19.12* 4.14 19.0 10.3 18.1
Expresiones de pliegue unarias y paquetes de parámetros vaciós P0036R0 c++17-lang 6 3.9 19.12* 4.14 10.3 19.1
Eliminar uso obsoleto de la palabra clave register P0001R1 c++17-lang 7 3.8 19.11* 4.13 18.0 10.3 17.7
Remover operator++(bool) obsoleto P0002R1 c++17-lang 7 3.8 19.11* 4.13 18.0 10.3 17.7
Hacer las especificaciones de excepciones parte del sistema de tipos P0012R1 c++17-lang 7 4 19.12* 4.14 19.0 10.3 19.1
Inicialización de agregados con clases base P0017R1 c++17-lang 7 3.9 19.14* 5.0 19.0.1 10.3 19.1
__has_include en condicionales del preprocesador P0061R1 c++17-lang 5 19.11* 4.13 18.0 10.3 17.7
RD: Nueva especificación para constructores heredados (DR1941 et al) P0136R1 c++17-lang 7 3.9 19.14* 6.1 10.3 19.1
Captura de lambda de *this P0018R3 c++17-lang 7 3.9 19.11* 4.14 19.0 10.3 18.1
Inicialización de lista directa de enumeraciones P0138R2 c++17-lang 7 3.9 19.11* 4.14 18.0 10.3 19.1
Expresiones lambda constexpr P0170R1 c++17-lang 7 5 19.11* 4.14 19.0 10.3 18.1
Tipos que difieren en begin y end en bucle for basado en rango P0184R0 c++17-lang 6 3.9 19.10* 4.12 18.0 10.3 17.7
Atributo [[fallthrough]] P0188R1 c++17-lang 7 3.9 19.10* 4.13 18.0 10.3 17.7
Atributo [[nodiscard]] P0189R1 c++17-lang 7 3.9 19.11* 4.13 18.0 10.3 17.7
Atributo [[maybe_unused]] P0212R1 c++17-lang 7 3.9 19.11* 4.13 18.0 10.3 17.7
Literales de punto flotante hexadecimales P0245R1 c++17-lang 3.0 19.11* 4.13 18.0 10.3 17.7
Usar atributos de espacios de nombres sin repetición P0028R4 c++17-lang 7 3.9 19.11* 4.13 18.0 10.3 17.7
Asignación de memoria dinámica para datos sobrealineados P0035R4 c++17-lang 7 4 19.12* 4.14 19.0 10.3 19.1
Deducción de argumentos de plantillas de clase P0091R3 c++17-lang 7 5 19.14* 5.0 19.0.1 10.3 19.1
Parámetros de plantilla de no tipo con el tipo auto P0127R2 c++17-lang 7 4 19.14* 5.0 19.0.1 10.3 19.1
Elisión de copia obligatoria P0135R1 c++17-lang 7 4 19.13* 5.0 19.0.1 10.3 19.1
Reemplazo de objetos de clase que contienen miembros de referencia P0137R1 c++17-lang 7 6 19.14* 5.0 10.3 19.1
Orden de evaluación de expresiones más estricto P0145R3 c++17-lang 7 4 19.14* 5.0 19.0.1 10.3 19.1
Vínculos estructurados P0217R3 c++17-lang 7 4 19.11* 4.14 19.0 10.3 18.1
Ignorar atributos desconocidos P0283R2 c++17-lang 3.9 19.11* 4.13 18.0 10.3 17.7
Instrucciones constexpr if P0292R2 c++17-lang 7 3.9 19.11* 4.14 19.0 10.3 18.1
if y switch con un inicializador P0305R1 c++17-lang 7 3.9 19.11* 4.14 18.0 10.3 18.1
Variables en línea P0386R2 c++17-lang 7 3.9 19.12* 4.14 19.0 10.3 18.1
Eliminar especificaciones de excepciones obsoletas de C++17 P0003R5 c++17-lang 7 4 19.10* 4.14 19.0 10.3 19.1
Expansión de paquetes en declaraciones using P0195R2 c++17-lang 7 4 19.14* 5.0 19.0 10.3 19.1
RD: Coincidencia de argumentos de plantilla de plantilla excluye plantillas compatibles P0522R0 c++17-lang 7 4 19.12* 5.0 19.0.1 10.3 19.1


Característica de c++17
 
Ponencia(s)
 
GCC
Clang
MSVC
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* N/A 10.3
std::uncaught_exceptions() N4259 6 3.7 19.0* N/A
std::size(), std::empty() y std::data() N4280 6 3.6 19.0* N/A 10.3
Mejorar std::pair y std::tuple N4387 6 4 19.0* N/A 10.3
std::bool_constant N4389 6 3.7 19.0* N/A 10.3
std::shared_mutex (sin tiempo) N4508 6 3.7 19.0* N/A 10.3
Rasgos de tipo de plantillas de variable P0006R0 7 3.8 19.0* N/A 10.3
Rasgos de tipo para operadores lógicos P0013R1 6 3.8 19.0* 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*

10.0.0*

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

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 polifórmicos 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*
(partial)*
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 de cadena elementales P0067R5 8 (no FP) 7 (no FP) 19.14* (no FP)*
19.24*
N/A
std::shared_ptr y std::weak_ptr con soporte para arrays P0414R2 7 19.12* 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

[editar] Características de C++14

[editar] Características centrales del lenguaje C++14

Característica de c++14
 
Ponencia(s)
 
Versión
 
GCC
Clang
MSVC
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 c++14-lang 4.9 3.4 18.0* 4.9 16.0 13.1.2* 5.15 10.3 8.6 16.1
Literales binarios N3472 c++14-lang 4.3 (GNU)
4.9
2.9 19.0* 4.10 11.0 13.1.2* 5.14 10.3 8.6 2015
decltype(auto), Deducción de tipo de retorno para funciones normales N3638 c++14-lang 4.8 (parcial)*
4.9
3.3 (parcial)*
3.4
19.0* 4.9 15.0 13.1.2* 5.15 10.3 8.6 16.1
Capturas de lambdas inicializadas/generalizadas (init-capture) N3648 c++14-lang 4.5 (parcial)
4.9
3.4 19.0* 4.10 15.0 5.15 10.3 8.6 16.1
Expresiones lambda genéricas (polifórmicas) N3649 c++14-lang 4.9 3.4 19.0* 4.10 16.0 13.1.2* 5.15 10.3 8.6 16.1
Plantillas de variable N3651 c++14-lang 5 3.4 19.0* 4.11 17.0 13.1.2* 5.15 10.3 8.6 17.4
constexpr extendidas N3652 c++14-lang 5 3.4 19.10* 4.11 17.0 13.1.2* 5.15 10.3 8.6 17.4
Inicializadores de miembros y agregados (NSDMI) N3653 c++14-lang 5 3.3 19.10* 4.9 16.0 5.14 10.3 8.6 16.1
Clarificar asignación de memoria (evitando/fusionando asignaciones) N3664 c++14-lang N/A 3.4 N/A N/A N/A 10.3 8.6 17.4
Atributo [[deprecated]] N3760 c++14-lang 4.9 3.4 19.0* 4.9 15.0*
16.0
13.1.2* 5.14 10.3 8.6 16.1
Desasignación con tamaño N3778 c++14-lang 5 3.4 19.0* 4.10.1 17.0 5.14 10.3 8.6 16.1
Comilla sencilla como separador de dígitos N3781 c++14-lang 4.9 3.4 19.0* 4.10 16.0 13.1.2* 5.14 10.3 8.6 2015


Característica de c++14
 
Ponencia(s)
 
GCC
Clang
MSVC
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* 5.15 10.3 8.6
std::result_of y SFINAE N3462 5 19.0* 5.15 10.3 8.6
constexpr para <chrono> N3469 5 3.4 19.0* 5.15 10.3 8.6
constexpr para <array> N3470 5 3.4 19.0* 5.15 10.3 8.6
constexpr para <initializer_list>, <utility> y <tuple> N3471 5 3.4 19.0* 5.15 10.3 8.6
std::integral_constant mejorado N3545 5 3.4 19.0* 5.15 10.3 8.6
Literales definidos por el usuario para <chrono> y <string> N3642 5 3.4 19.0* 5.15 10.3 8.6
Iteradores hacia adelante nulos N3644 5 (parcial) 3.4 19.0* 5.15 10.3 8.6
std::quoted N3654 5 3.4 19.0* 5.15 10.3 8.6
Búsqueda asociativa heterogénea N3657 5 3.4 19.0* 5.15 10.3 8.6
std::integer_sequence N3658 5 3.4 19.0* 5.15 10.3 8.6
std::shared_timed_mutex N3659 5 3.4 19.0* 5.15 10.3 8.6
std::exchange N3668 5 3.4 19.0* 5.15 10.3 8.6
Corregir funciones miembro constexpr sin const N3669 5 3.4 19.0* 5.15 10.3 8.6
std::get<T>() N3670 5 3.4 19.0* 5.15 10.3 8.6
std::equal, std::is_permutation, std::mismatch de doble rango N3671 5 3.4 19.0* 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 centrales de C++11

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


Característica de c++11
 
Ponencia(s)
 
GCC
Clang
MSVC
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*
(no-op)

(no-op)
Dinero, tiempo y manipuladores de E/S hexfloat N2071
N2072
5 3.8 19.0* 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] Referencias

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

  • GCC (actualizado en 2020-03)
  • Clang++ (actualizado en 2020-03)
  • Apple Clang (actualizado en 2019-06)
  • Microsoft Visual Studio (actualizado en 2020-03)
  • Intel C++ (actualizado en 2018-11)
  • STL Paralela (una implementación de los algoritmos de la biblioteca estándar de C++17 con soporte de políticas de ejecución)
  • EDG (actualizado en 2019-10)
  • Oracle C++ (actualizado en 2017-07)
  • Soporte completo de C++14 support añadido en la versión 5.15.
  • Oracle produce 4 implementaciones de la biblioteca estándar de C++:
  • libCstd (RogueWave Standard Library version 2), antecede a C++98
  • stlport4 (STLport Standard Library version 4.5.3), antecede C++03
  • stdcxx4 (Apache Standard Library version 4), antecede a C++11
  • libstdc++ (biblioteca en tiempo de ejecución de GCC, soporte para C++11 y C++14 dependiendo de la versión)
  • IBM XL C++ (actualizado en 2018-05)
  • IBM XL C++ para Linux
  • Estatus de soporte del lenguaje central: C++11 completo a partir de 13.1.6, C++14 parcial en 16.1.0
  • IBM no produce una implementaciones de la biblioteca estándar de C++ para Linux (utiliza GNU libstdc++)
  • IBM XL C++ for AIX
  • HP aCC
  • Digital Mars C++
  • Embarcadero C++
  • Cray (actualizado en 2020-02)
  • Portland Group (PGI) (actualizado en 2019-01)
  • Nvidia Cuda nvcc (actualizado en 2020-02)
  • Texas Instruments (actualizado en 2018-05)
  • Analog Devices (actualizado en 2018-05)