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]P0409R28 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 designadosP0329R44.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éricasP0428R28 9 19.22*

11.0.0*

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

10.0.0*

5.1 2021.1 20.7
ConceptosP0734R06
(sólo TS)
10
10 19.23*(parcial)*

12.0.0* (parcial)

6.1 2021.5 20.11
Lambdas en contextos no evaluadosP0315R49 13 (parcial)*
14 (parcial)*
19.28 (16.8)*
Operador de comparación de tres víasP0515R310 8 (parcial)
10
19.20*5.1 2021.1 20.7
ID: Simplificar captura de lambda implícita P0588R18 19.24*5.1 2021.1 20.7
Instrucciones de inicialización para bucle for basado en rango}}P0614R19 8 19.25*

11.0.0*

6.0 20.11
Lambdas sin estado construibles y asignables por defecto P0624R29 8 19.22*

10.0.1*

5.1 2021.1 20.7
Coincidencia errónea const con constructor de copia por defecto (=default) P0641R29 8 19.0 (2015)*

10.0.1*

5.1 2021.1 20.7
Verificación de acceso en especializaciones P0692R18 (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 P0846R09 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 constanteP0859R05.2 (parcial)*
9
8 19.27* (parcial)*
19.31*
Atributos [[likely]] y [[unlikely]]P0479R59 12 19.26*

13.0.0*

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

11.0.3*

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

11.0.3*

5.1 2021.1 20.7
Funciones miembro especiales condicionalmente triviales P0848R310 19.28 (16.8)*6.1 20.11
ID: Relajar las reglas para encontrar un punto de personalización para vínculos estructuradosP0961R18 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 rangoP0962R18 8 19.25*5.1 2021.1 20.7
ID: Permitir vínculos estructurados para miembros accesibles P0969R08 8 19.21*

10.0.1*

5.1 2021.1 20.7
Destruir el operador deleteP0722R39 6 19.27*

10.0.0*

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

11.0.3*

5.1 2021.1 20.7
Integrar macros de prueba de característicaP0941R25 3.4 19.15* (parcial)
19.20*
5.0 2021.1 20.7
Prohibir agregados con constructores declarados por el usuario P1008R19 8 19.20*

10.0.1*

5.1 2021.1 20.7
Función virtualconstexprP1064R09 9 19.28 (16.9)*

11.0.3*

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

10.0.1* (parcial)

5.1 20.7
char8_tP0482R69 7*19.22*

10.0.0*

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

11.0.3*

5.1 19.1
Bloques try-catchconstexprP1002R19 8 19.25*

10.0.1*

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

10.0.1*

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

11.0.3*

N/AN/Ayes
dynamic_castconstexprtypeid polimórfico en expresiones constantesP1327R110 9 19.28 (16.9)*

11.0.3*

5.1 2021.1 20.7
Cambiar el miembro activo de una unión dentro de constexprP1330R09 9 19.10*

11.0.3*

5.1 2021.1 20.7
CorrutinasP0912R510 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 P0960R310 19.28 (16.8)*5.1 2021.1 20.7
ID: Deducción de tamaños de arrays en expresiones newP1009R211 9 19.27*

11.0.3*

5.1 2021.1 20.7
MódulosP1103R311 (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
<=> != ==P1185R210 10 19.22*5.1 2021.1 20.7
ID: Funciones explícitamente marcadas como =default con diferentes especificaciones de excepción P1286R210 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 P0388R410 14 19.27*6.0 2021.5 20.11
Operaciones de contenedores constexprP0784R710 10 19.28 (16.9)*6.0 2021.5 20.11
Poner en desuso algunos usos de volatileP1152R410 10 19.27*6.0 2021.5 20.11
constinitP1143R210 10 19.29 (16.10)*6.1 20.11
Poner en desuso el operador coma en índices/subíndices P1161R310 9 19.25*

11.0.3*

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

11.0.3*

6.0 2021.5 20.11
Inicialización trivial por defecto en funciones constexprP1331R210 10 19.27*6.1 20.11
Declaración asm no evaluada en funciones constexprP1668R110 10 19.28 (16.9)*6.1 20.11
using enumP1099R511 13 19.24*6.3
Sintetizar la comparación de tres vías para una categoría de comparación especificada P1186R311 10 19.24*6.0 2021.5 20.11
ID: Atributo [[nodiscard]] para constructores P1771R110 9 19.24*

11.0.3*

6.0 2021.5 20.11
Deducción de argumentos de plantillas de clase para alias de plantilla P1814R010 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 P1825R011*13 19.24*6.0 2021.5 20.11
Permitir hacer comparaciones por defecto por valor P1946R010 10 19.25*6.1 20.11
Eliminar std::weak_equality y std::strong_equalityP1959R010 10 19.25*6.1 20.11
Inconsistencias con parámetros de plantilla sin tipo P1907R110 (parcial)
11
12 (parcial) 19.26*6.2
ID: Pseudodestructores terminan los tiempos de vida de los objetos P0593R611 11 N/AN/A
ID: Convertir de T* a bool debe considerarse de estrechamiento P1957R210*
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::endianP0463R18 7 19.22*

10.0.0*

Extender std::make_shared() para admitir arraysP0674R112 19.27*
Tipo atómico de punto flotante P0020R610 19.22*
Flujo de salidasincronizado con búferP0053R711 19.29 (16.10)*
constexpr para <algorithm> y <utility>P0202R310 8 (parcial)
12
19.26*

10.0.1* (parcial)
12.0.5*

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

10.0.0* (parcial)

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

11.0.3*

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

10.0.0*

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

10.0.0* (parcial)

std::remove_cvrefP0550R29 6 19.20*

10.0.0*

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

10.0.0* (parcial)

Usar std::move en algoritmos numéricosP0616R09 12 19.23*
Utilería para convertir un puntero a un puntero sin formato P0653R28 6 19.22*
std::shared_ptr y std::weak_ptr atómicos P0718R219.27*
std::spanP0122R710 7 19.26*

10.0.0*

Calendario y huso horarioP0355R711 (parcial) 7 (parcial) 19.29 (16.10)*

10.0.0* (parcial)

<version>P0754R29 7 19.22*

10.0.0*

Comparar contenedores no ordenados P0809R016.0*
Requerimientos de ConstexprIteratorP0858R09 12 19.11*
std::basic_string::reserve() no debe encogerse P0966R111 8 19.25*

10.0.1*

Comparación e intercambio atómico con bits de relleno P0528R319.28 (16.8)*
std::atomic_refP0019R810 19.28 (16.8)*
Función miembro contains() de contenedores asociativos, p. ej., e.g. std::map::contains()P0458R29 9 (parcial)*
13
19.21*

11.0.3*

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

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

P0556R3P1956R19 (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 eraseP0646R19 10 19.21*
std::destroying_deleteP0722R39 9 19.27*

11.0.3*

std::is_nothrow_convertibleP0758R19 9 19.23*

11.0.3*

Añadir std::shift_left/right a <algorithm>P0769R210 12 19.21*
Constexpr para std::swap() y funciones relacionadas con swapP0879R010 12 (parcial)
13
19.26*
std::type_identityP0887R19 8 19.21*

10.0.1*

Biblioteca de conceptosP0898R310 13 19.23*

12.0.0* (parcial)

Operadores de comparaciónconstexpr para std::arrayP1023R010 8 19.27*

10.0.1*

std::unwrap_ref_decay y std::unwrap_referenceP0318R19 8 19.21*

10.0.1*

std::bind_front()P0356R59 13 19.25*
std::reference_wrapper para tipos incompletos P0357R39 8 19.26*

10.0.1*

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

10.0.1*

Apoyo de la biblioteca para char8_tP0482R69 8 (parcial)*
19.22*
Funciones de utilería para implementar la construcción de uses-allocatorP0591R49 19.29 (16.10)*
ID: std::variant y std::optional deberían propagar la trivialidad de copia/movimiento P0602R48.3 8 19.11*

10.0.1*

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

11.0.3*

El constructor de movimiento de std::function debería ser noexceptP0771R17.2 6 19.22*
La Propuesta de una solabiblioteca de rangosP0896R410 13 (parcial) 19.29 (16.10)*
Búsqueda heterogénea para contenedores no ordenadosP0919R3P1690R111 12 19.23* (P0919R3)
19.25* (P1690R1)
<chrono>zero(), min(), y max() deberían ser noexceptP0972R09 8 19.14*

10.0.1*

constexpr en std::pointer_traitsP1006R19 8 19.26*

10.0.1*

std::assume_aligned()P1007R39*
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 P1032R110 13 19.28 (16.8)*
Eliminar operadores de comparación de std::spanP1085R210 8 19.26*

10.0.1*

Hacer la propagación de asignadores con estado más consistente para operator+(basic_string)P1165R110 19.26*
Borrado de contenedores consistente; p. ej., std::erase(std::vector), o std::erase_if(std::map)P1209R0P1115R39 (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 P1502R111 19.29 (16.10)*
polymorphic_allocator<> como un tipo vocabulario P0339R69 19.28 (16.9)*
std::execution::unseqP1001R29 19.28 (16.8)*
std::lerp() y std::midpoint()P0811R39 9 19.23* (parcial)
19.28 (16.8)*

11.0.3*

Mejoras de usabilidad para std::spanP1024R310 9*
14
19.26*

11.0.3*

ID: Hacer create_directory() intuitiva P1164R18.3 12 19.20*
std::ssize() y medida sin signo para std::spanP1227R210 9 19.25*

11.0.3*

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

11.0.3*

std::to_array()P0325R410 10 19.25*
Acceso eficiente al búfer de std::basic_stringbufP0408R711 19.29 (16.10)*
Compatibilidad de distribución y rasgos de tipo de interconvertibilidad de punterosP0466R519.27*
Operaciones de bits: std::

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

P0553R49 9 19.25**
19.28 (16.8)*

11.0.3*

Constantes matemáticasP0631R810 11 19.25*
Formato de textoP0645R1014 (parcial)*19.29 (16.10)*
std::stop_token y std::jthreadP0660R1010 19.28 (16.9)*
std::allocatorconstexpr y utilerías relacionadas P0784R710 12 19.29 (16.10)*
std::stringconstexprP0980R112 19.29 (16.10)*
19.30**
std::vectorconstexprP1004R212 19.29 (16.10)*
19.30**
Adaptadores de rango de entrada P1035R710 19.29 (16.10)*
std::invoke() constexpr y utilerías relacionadas P1065R210 12 19.28 (16.8)*
Espera y notificación atómica, std::counting_semaphore, std::latch y std::barrierP1135R611 11 19.28 (16.8)*
std::source_locationP1208R611 19.29 (16.10)*
Añadir <=> a la biblioteca estándar P1614R210 14 19.29 (16.10)*
constructor constexpr por defecto de std::atomic y std::atomic_flagP0883R210 13 19.26*
constexpr para algoritmos numéricosP1645R110 12 19.26*
Comparaciones de enteros seguras P0586R210 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.
close