Namespaces
Variants

Soporte del compilador para C++26

De es.cppreference.net

* - pase el cursor sobre una celda marcada con la estrella * para ver notas emergentes adicionales.
DRnn - el número nn después de "DR" denota la revisión de C++ objetivo a la que se aplica el Informe de defectos, por ejemplo, DR20 → C++20.

Características principales del lenguaje C++26

Característica C++26

 
Documento(s)

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
DR98: Eliminación de comportamiento indefinido del análisis léxico P2621R3 Sí 3.3 16.0.0*
DR98: Hacer que las literales de cadena no codificables sean mal formadas P1854R4 14 14 16.0.0*
Cadenas no evaluadas P2361R6 14 17 (parcial)*
18
16.0.0*
Agregar @, $ y ` al conjunto de caracteres básico P2558R2 15 Sí 16.0.0*
Constexpr cast desde void*  (FTM)* P2738R1 14 17
DR20: Sobre la ignorabilidad de los atributos estándar P2552R3 15 Sí
DR11: Almacenamiento estático para inicializadores con llaves P2752R3 14
Mensajes static_assert generados por el usuario  (FTM)* P2741R3 14 17
Variables placeholder sin nombre  (FTM)* P2169R4 14 18
Indexación de paquetes  (FTM)* P2662R3 15 19
Eliminación de la conversión aritmética obsoleta en enumeraciones P2864R2 14 18
DR11/20: Inicialización de parámetros de plantilla P2308R1 9 18
Prohibir vincular una referencia devuelta a un temporal P2748R5 14 19
Atributos para vinculaciones estructuradas  (FTM)* P0609R3 15 19
Comportamiento erróneo para lecturas no inicializadas, [[indeterminate]] atributo P2795R5
P3684R1
16
= delete("reason");  (FTM)* P2573R2 15 19
Amigos variádicos  (FTM)* P2893R3 15 20
DR98: Aclaración de reglas para elisión de llaves en inicialización de agregados P3106R1 Sí 17
DR20: Prohibir que las declaraciones de módulo sean macros P3034R1 15
DR11: Los bucles infinitos triviales no son comportamiento indefinido P2809R3 14 19
Constexpr placement new  (FTM)* P2747R2 15 20
Declaración de vinculación estructurada  como condición (FTM) * P0963R3 15 6
(parcial)*
21 Ordenamiento de restricciones que involucran  expresiones fold (FTM) * P2963R3
19 Eliminar un puntero a un tipo incompleto debería ser mal formado P3144R2 15 19
6.7 Las vinculaciones estructuradas  pueden introducir un paquete (FTM ) * P1061R10
16 21 Vinculaciones estructuradas constexpr y referencias a variables constexpr P2686R5 16* 22 (parcial)
*6.7  Excepciones constexpr (FTM ) *
Coma variádica Oxford P3176R1 15 20
Eliminación de comparaciones de arrays obsoletas P2865R6 15 20
#embed  (FTM)* P1967R14 15 19*
Parámetros de plantilla concepto y plantilla de variable  (FTM)* P2841R7 22 (parcial)*
Uniones triviales  (FTM)* P3074R7
P3726R2
Puntos de control observables P1494R5 16
Contratos  (FTM)* P2900R14 16
Reflexión  (FTM)* P2996R13
P3096R12
P3293R3
P3394R4
P3795R2
16*
Sentencias de expansión  (FTM)* P1306R5 16
Herencia virtual constexpr  (FTM)* P3533R2 16
Diagnóstico de errores del preprocesador P2843R3 16
Permitir adjuntar main al módulo global P3618R0 16
DR20: Permitir #line antes de declaraciones de módulo P3868R1
DR17: Deducción de argumentos de plantilla de clase para parámetros de plantilla de tipo plantilla P3865R3
Conversión a const de expresiones splice en aserciones de contrato P3598R0
 

Característica C++26
 

Documento(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

Características de la biblioteca C++26



 
Característica C++26

 
Documento(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*<Prueba de éxito o fallo de las funciones >charconv  (FTM) * P2497R0 14 18
16.0.0*std::text_encoding : identificación de codificaciones de texto (FTM) *
P1885R12
P2862R1
14 Sobrecargas aritméticas de std::to_string y std::to_wstring usan  std::format (FTM) * P2587R3
14  Verificación de tipos de argumentos de formato (FTM) * P2757R3
15  Formateo de punteros (FTM) * P2510R314 *17 *19.40*
*Soporte de hashing para clases de valor std::chrono  (FTM)* P2592R3 16
<rcu>: Read-Copy Update  (FTM)* P2545R4
<hazard_pointer>: Hazard Pointers  (FTM)* P2530R3
ADL-proof std::projected P2538R1 14* 18* 19.38** 16.0.0*
Ordenamiento estable constexpr  (FTM)* P2562R1 15 21
Miembro std::basic_format_arg::visit()  (FTM)* P2637R3 15 19
Miembro std::variant::visit()  (FTM)* P2637R3 15 18
std::is_within_lifetime  (FTM)* P2641R4
P3450R1
22 (parcial)*
Extensión de contenedores asociativos con las sobrecargas heterogéneas restantes  (FTM)* P2363R5 16
Habilitación del uso de std::weak_ptr como claves en contenedores asociativos no ordenados  (FTM)* P1901R2 16
Manejadores nativos en flujos de archivo  (FTM)* P1759R6 14 18 16.0.0*
Interfaz de flujos de cadena con std::string_view  (FTM)* P2495R3 16 19
Interfaz de std::bitset con std::string_view  (FTM)* P2697R1 16 18 16.0.0*
Más constexpr para <cmath> y <complex>  (FTM)*  (FTM)* P1383R2 4.6 (parcial)*
Adición de los nuevos prefijos SI de 2022 en ratios: std::quecto, std::ronto, std::ronna y std::quetta  (FTM)* P2734R0 14 17*
std::function_ref: referencia invocable con borrado de tipo  (FTM)* P0792R14
P3961R1
16
std::copyable_function  (FTM)* P2548R6 16
std::bind_front, std::bind_back y std::not_fn a invocables NTTP
  (FTM)*  (FTM)*  (FTM)*
P2714R1 16
std::submdspan()  (FTM)* P2630R4
P3355R1
P3663R3
P3982R2
16
Lenguaje independiente: opcional ::operator new P2013R5 19.38*
Independiente std::char_traits, std::errc y facilidades en: <charconv>, <cstdlib>, <cstring>, <cwchar>  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)* P2338R4 19.38*
Más facilidades independientes
  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P2198R7 19.38*
Aritmética de saturación  (FTM)* P0543R3
P4052R0
14
16*
18 16.0.0*
<depuración>: Soporte de depuración  (FTM)* P2546R5
P2810R4
16*
<linalg>: Una interfaz de álgebra lineal de funciones libres basada en BLAS  (FTM)* P1673R13
P3050R2
P3222R0
P3371R5
Hacer que la macro assert() sea fácil de usar P2264R7 Sí*
Cadenas de formato dinámicas  (FTM)* P2918R2
P3953R3
14*
16*
18 16.0.0*
std::span::at()  (FTM)* P2821R5 14 18 16.0.0*
Protocolo de tupla añadido a std::complex  (FTM)* P2819R2 15 19
Una nueva especificación para std::generate_canonical P0952R2 16 19.42*
Eliminación del typedef obsoleto std::allocator::is_always_equal P2868R3 15 18 16.0.0*
Eliminación de la sobrecarga de función de std::basic_string::reserve() que no toma argumentos P2870R3 18 16.0.0*
Eliminación de facetas de conversión Unicode obsoletas (<codecvt>) P2871R3 18 16.0.0*
Independiente: eliminación de std::strtok  (FTM)* P2937R0 14 19.40*
Biblioteca independiente: clases parciales  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)* P2407R5 14 19.42*
Biblioteca independiente: std::inout, std::expected, std::span
  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P2833R2 14 19.42*
DR23: std::basic_const_iterator debería seguir la convertibilidad de su tipo subyacente  (FTM)* P2836R1
P2950R0
14 19.40*
DR20: std::make_format_args ahora acepta solo referencias lvalue en lugar de referencias de reenvío P2905R2 14 18 19.40* 16.0.0*
DR20: Corregir el formato de unidades de código como enteros  (FTM)* P2909R4 13.3 18 19.40* 16.0.0*
views::concat  (FTM)* P2542R8 15
Concatenación de cadenas y vistas de cadena  (FTM)* P2591R5 15 19
Habilitación de la inicialización de listas para algoritmos  (FTM)* P2248R8
P3217R0
P3787R2
15
std::ranges::generate_random  (FTM)* P1068R11
Comparaciones para std::reference_wrapper, y restricciones para comparaciones de std::pair, std::tuple, std::optional y std::variant  (FTM)*  (FTM)* P2944R3 14 22
19 (parcial)*
Diseños mdspan con relleno  (FTM)* P2642R6 16
Nuevo CTAD para std::span y std::mdspan con constantes integrales P3029R1 16 19
Máximo y mínimo atómicos  (FTM)* P0493R5 16
std::formatter<std::filesystem::path>  (FTM)* P2845R8 16
Impresión de líneas en blanco con std::println()  (FTM)* P3142R0 14* 19* 19.41**
Desobsolecer std::polymorphic_allocator::destroy P2875R4 14.3* 15 19.41*
Eliminación de strstreams obsoletos P2867R2 19
Eliminación de las API de acceso atómico obsoletas de std::shared_ptr
P2869R4Eliminación de std::wstring_convert P2872R3
19 DR23: Permitir una implementación eficiente de  std::print (FTM) *
P3107R5
P3235R3 16
19.43*Constexpr  placement new (FTM) * P2747R2 15
20  Biblioteca de control de ejecución (FTM) *
P2300R10
P3388R3
P3396R1
P3433R1
P3481R5
P3570R2
P3682R0
P3887R1Correcciones adicionales de la biblioteca de control de ejecución
P3373R4
P3826R5
P3986R1
P4154R0
P4159R0std::inplace_vector : vector redimensionable dinámicamente con capacidad fija (FTM) *
P0843R14
P3981R2
P4022R0
16 std::philox_engine : motor de números aleatorios basado en contador (FTM) * P2075R6
16 Soporte de rango para  std::optional (FTM) *
P3168R2
P3913R1 16
22 (parcial)*std::is_virtual_base_of : rasgo de tipo para detectar clases base virtuales (FTM) * P2985R0 15
20 std::dims para  std::mdspan (FTM) * P2389R2 16
19 DR11: Especificación formal del tipo de std::ignore P2968R2 15 19
19.42* DR20: Eliminación del requisito de referencia común de los conceptos invocables indirectamente (FTM) * P2997R1 15 19
19.42*Deprecación de std::is_trivial y std::is_trivial_v P3247R2 15
21 DR20: Objetos de función de algoritmo P3136R1 Sí Sí 19.39*
Sí  std::ranges::cache_latest_view (FTM) * P3138R5
15 Restricción de los operadores de igualdad de std::expected  (FTM) * P3379R0 15
22 std::aligned_accessor: un accessor de std::mdspan  que expresa sobrealineación de punteros (FTM) * P2897R7
16 std::is_sufficiently_aligned : verifica la precondición de alineación de un puntero (FTM) * P2897R7
16  std::atomic_ref::address() (FTM) *
P2835R7
P3936R1 16 (parcial)*
22 (parcial)*DR11/20: Tipos cv-cualificados en std::atomic y std::atomic_ref P3323R1 16
19.44*Constexpr std::atomic y  std::atomic_ref (FTM) *
P3309R3Constexpr  algoritmos de memoria especializados (FTM) *
P3508R0
P3369R0
<15 >stdbit.h< y > stdckdint.h (FTM) * (FTM) * P3370R115
*
<16 >simd:  tipos de datos paralelos (FTM) *
P1928R15
P3430R3
P2876R3
P3691R1
P3922R1
P3690R1
P3932R0
P4012R116 (parcial)
* Operaciones matemáticas SIMD
P1928R15
P3844R4Una utilidad para crear entornos de ejecución
P3325R5Tipos de excepción constexpr, p.ej. std::bad_alloc, std::bad_cast  etc. (FTM) *
P3068R6
P3378R2
P3842R2
16 std::simd::chunk P3441R2
16  Operaciones de bits SIMD (FTM) *
P2933R4Soporte de valores std::complex intercalados en  std::simd (FTM) *
P2663R7std::memory_order::consume Desactivar y deprecar
P3475R1Poner std::monostate< en > utility P0472R3 15 21
19.50* std::indirect (FTM) * P3019R14
16  std::polymorphic (FTM) * P3019R14
16
 Más contenedores y adaptadores constexpr (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM)
* P3372R316 (parcial) *
21 (parcial)*
22 (parcial)*Constexpr std::inplace_vector  para tipos no triviales (FTM) *
P3074R7 std::ranges::as_input_view (FTM) *
P3137R3
P3828R115
*16
*std::ranges::approximately_sized_range y  std::ranges::reserve_hint (FTM) *
<P2846R6>hive : Un contenedor basado en cubos que reutiliza ubicaciones de memoria de elementos borrados (FTM) *
P0447R28 Soporte de biblioteca para puntos de control observables (FTM) *
P1494R5
P3641R0
<16 >contracts : Soporte de manejo de violaciones de contrato (FTM) *
P2900R14
P3819R0
16 Endurecimiento de la biblioteca estándar
P3471R4
P3697R1
P3878R115 (parcial)*19.44* (parcial)*19.50*
(parcial)*<Biblioteca independiente: >algorithm<, >execution<, >memory<, >
numeric< y > random (FTM) * (FTM) * (FTM) * (FTM) * (FTM)
*
P2976R1 DR20: Conversión de iteradores contiguos a punteros P3349R0 15
<19.51*>meta : Soporte de biblioteca de reflexión (FTM) *
P2996R13
P3394R4
P3293R3
P3096R12
P3795R2
P4156R016 (parcial)
* Excepciones constexpr como manejo de errores en reflexión (FTM) * P3560R2
16 std::define_static_object, std::define_static_array,  std::define_static_string (FTM) * P3491R3
16 std::simd::basic_vec y std::simd::basic_mask son tipos de rango P3480R6
16 <std::optional&> T (FTM) * (FTM) *
P2988R12
P3836R2 16
22 std::string::subview() y  std::string_view::subview() (FTM) * P3044R2 16
22 Constexpr std::shared_ptr  y amigos (FTM) *
P3037R6 Tipos de tarea de corrutina (FTM) *
P3552R3
P3980R1
P3927R2
P3941R4
P4151R1 Ámbitos asíncronos: creación de ámbitos para concurrencia no secuencial (FTM) *
P3149R11
P3815R1 Planificador paralelo (FTM) *
P2079R10
P3804R2 Diagnósticos de emisor de alta calidad con excepciones constexpr
P3557R3execution::write_env y execution::unstoppable adaptadores de emisor
P3284R4 std::views::indices (FTM) * P3060R3
16  Algoritmos de rango paralelos (FTM) *
P3179R9
P3709R2 Mín/máx atómico en punto flotante (FTM) *
P3008R6 Operaciones de reducción atómica (FTM) *
P3111R8 Operaciones de permutación SIMD (FTM) *
P2664R11 std::mdspan::at() P3383R3
16  std::exception_ptr_cast() (FTM) *
P2927R3
P3748R0
P3981R216 (parcial)
* Ordenamiento de tipos constexpr estandarizado (FTM) *
P2830R10
P3778R0
P4140R0
16  std::constant_wrapper (FTM) *
P2781R9
P3978R3 16
23 Cambios en std::apply: std::apply_result, std::is_applicable y  std::is_nothrow_applicable (FTM) *
P1317R2Hacer coherente el uso del asignador con borrado de tipo en std::promise y std::packaged_task P3503R3 17
19.51*std::filesystem::path::display_string() y  std::filesystem::path::native_encoded_string() (FTM) *
P2319R5Hacer que std::istream::ignore() sea menos sorprendente P3223R2 16
19.50*DR11: Inconsistencias resueltas en begin/end para std::valarray y  std::initializer_list (FTM) * (FTM) * P3016R6
19.51*Correcciones de  std::flat_meow (FTM) * (FTM) * P3567R2 22
19.51*Hacer que std::integer_sequence  sea utilizable en enlaces estructurados y sentencias de expansión (FTM) * P1789R3 16
22  Formateo de texto constexpr (FTM) *
P3391R2 std::start_lifetime (FTM) *
P3726R2std::is_structural: rasgo de tipo para detectar  tipos estructurales (FTM) * P3856R8
16 std::constant_wrapper usado como argumento de constructor de std::function_ref P3948R1
16 signed charSoporte de unsigned char y en generación de números aleatorios
P4037R1

Detección de reemplazabilidad definida por la implementación del manejador de violación de contrato utilizando la macro de característica  (FTM)

* P3886R0
16 DR20: Hacer privados los constructores definidos por el usuario de iteradores/centinelas de vista P3059R2
Sí  DR20: Extensiones de vista de filtro para un uso más seguro (FTM) * P3725R3
 

Característica C++26
 

Documento(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*