Espacios de nombres
Variantes
Acciones

Apoyo de compiladores para C++20

De cppreference.com

[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] Acrónimos

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