Namespaces
Variants

C++26

De es.cppreference.net
< cpp

La próxima generación del estándar C++.

El cronograma IS actual para C++26: P1000R6 (2024-05-14).

Nuevas características del lenguaje

Nuevas características de la biblioteca

Nuevos módulos

Nuevos encabezados

Encabezados de compatibilidad con C:

Características obsoletas

Características eliminadas

Características obsoletas (deprecated)

Reportes de defectos

Soporte de compiladores

Artículo principal: Soporte de compiladores C++26

Características del núcleo 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 en el análisis léxico P2621R3 Sí 3.3 16.0.0*
DR98: Hacer que los literales de cadena no codificables estén mal formados 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*
Conversión constexpr 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 de marcador de posición 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 enlaces estructurados  (FTM)* P0609R3 15 19
Comportamiento erróneo para lecturas no inicializadas, atributo [[indeterminate]] P2795R5
P3684R1
16
= delete("reason");  (FTM)* P2573R2 15 19
Amigos variádicos  (FTM)* P2893R3 15 20
DR98: Aclarar las reglas para la elisión de llaves en la inicialización de agregados P3106R1 Sí 17
DR20: Prohibir que las declaraciones de módulos 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 enlace estructurado como condición  (FTM)* P0963R3 15 6 (parcial)*
21
Ordenamiento de las restricciones que involucran expresiones fold  (FTM)* P2963R3 19
Eliminar un puntero a un tipo incompleto debe estar mal formado P3144R2 15 19 6.7
Los enlaces estructurados pueden introducir un paquete  (FTM)* P1061R10 16 21
Constexpr enlaces estructurados y referencias a variables constexpr P2686R5 16* 22 (parcial)* 6.7
Constexpr excepciones  (FTM)* P3068R6 16
Coma variádica de Oxford P3176R1 15 20
Eliminación de comparaciones obsoletas de arrays P2865R6 15 20
#embed  (FTM)* P1967R14 15 19*
Parámetros de plantilla de 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 de 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
Const-ificación de expresiones de empalme 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 fracaso 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 Formato de punteros
( FTM)*P2510R3 14 *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 std::projected
a prueba de ADLP2538R1 14 *18 *19.38* *16.0.0* Ordenamiento estable constexpr
( FTM)*P2562R1 15 21 std::basic_format_arg::visit()
miembro ( FTM)*P2637R3 15 19 std::variant::visit()
miembro ( FTM)*P2637R3 15 18 std::is_within_lifetime
( FTM)*P2641R4 P3450R1
22 (parcial)*
Extender contenedores asociativos con las sobrecargas heterogéneas restantes
( FTM)*P2363R5 16 Habilitar el uso de
std::weak_ptr como claves en contenedores asociativos no ordenados ( FTM)*P1901R2 16 Manejadores nativos en flujos de archivos
( 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
para constexprcmath< y >complex< (> FTM)* ( FTM)*P1383R2 4.6 (parcial)* Agregar 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 de tipo borrado ( 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 newP2013R5 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* debugging
<: >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 la macro
assert() amigable para el usuario 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 agregado a
std::complex ( FTM)*P2819R2 15 19 Una nueva especificación para
std::generate_canonicalP0952R2 16 19.42* Eliminación del typedef obsoleto
std::allocator::is_always_equalP2868R3 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 debe seguir la convertibilidad de su tipo subyacente ( FTM)*P2836R1 P2950R0
14
19.40* DR20:
std::make_format_args ahora acepta solo referencias a lvalues 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 cadenas ( FTM)*P2591R5 15 19 Habilitar 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 rellenados
( 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 Imprimir líneas en blanco con
std::println() ( FTM)*P3142R0 14 *19 *19.41* *Desdeprecar
std::polymorphic_allocator::destroyP2875R4 14.3 *15 19.41* Eliminación de strstreams obsoletos
P2867R2 19 Eliminación de las API de acceso atómico
std::shared_ptr obsoletas P2869R4 Eliminación de
std::wstring_convertP2872R3 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
P3887R1
Correcciones adicionales de la
biblioteca de control de ejecución P3373R4 P3826R5
P3986R1
P4154R0
P4159R0
std::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
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::ignoreP2968R2 15 19 19.42* DR20: Eliminación del requisito de referencia común de los conceptos indirectamente invocables
( FTM)*P2997R1 15 19 19.42* Deprecar
std::is_trivial y std::is_trivial_vP3247R2 15 21 DR20: Objetos 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 accesor 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 con calificación cv en std::atomic y std::atomic_ref P3323R1 16 19.44*
Constexpr std::atomic y std::atomic_ref  (FTM)* P3309R3
Algoritmos de memoria especializada constexpr ( FTM)*P3508R0 P3369R0
15
stdbit.h
< y >stdckdint.h< (> FTM)* ( FTM)*P3370R1 15 *16
simd
<: >tipos de datos paralelos ( FTM)*P1928R15 P3430R3
P2876R3
P3691R1
P3922R1
P3690R1
P3932R0
P4012R1
16 (parcial)
*Operaciones matemáticas SIMD
P1928R15 P3844R4
Una utilidad para crear
entornos de ejecuciónP3325R5 Tipos 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)*P2933R4 Soporte de valores
std::complex entrelazados en std::simd ( FTM)*P2663R7 Desarmar y deprecar
P3475R1std::memory_order::consume Poner
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)*P3372R3
16 (parcial) *21 (parcial)* 22 (parcial)*
Constexpr
std::inplace_vector para tipos no triviales ( FTM)*P3074R7 std::ranges::as_input_view
( FTM)*P3137R3 P3828R1
15
*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 violación de contrato> ( FTM)*P2900R14 P3819R0
16
Endurecimiento de la biblioteca estándar
P3471R4 P3697R1
P3878R1
15
(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
P4156R0
16 (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 alta calidad de senders con excepciones constexpr
P3557R3 Adaptadores de sender
execution::write_env y execution::unstoppable P3284R4
std::views::indices  (FTM)* P3060R3 16
Algoritmos de rango paralelos  (FTM)* P3179R9
P3709R2
Mín/máx atómico de 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
P3981R2
16 (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 de tipo borrado 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 menos sorprendente std::istream::ignore() 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 std::integer_sequence  utilizable en enlaces estructurados y sentencias de expansión (FTM) * P1789R3 16
22  Formato 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 la generación de números aleatorios
P4037R1

Detección de reemplazabilidad definida por la implementación del manejador de violación de contrato mediante 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 16
 

Característica C++26
 

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

* - 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 C++ objetivo a la que se aplica el Reporte de Defecto, p.ej., DR20 → C++20.

Enlaces externos

1.  C++26 - Wikipedia