C++26
La próxima generación del estándar C++.
El cronograma actual de IS para C++26: P1000R6 (2024-05-14).
| Esta sección está incompleta |
Contenidos |
Nuevas características del lenguaje
Nuevas características de la biblioteca
Nuevos módulos
Nuevos encabezados
- <contracts>
- <debugging>
- <hazard_pointer>
- <hive>
- <inplace_vector>
- <linalg>
- <rcu>
- <simd>
- <text_encoding>
Encabezados de compatibilidad con C:
Características obsoletas
Características eliminadas
| Esta sección está incompleta |
Características obsoletas
| Esta sección está incompleta |
Informes de defectos
Soporte del compilador
Artículo Principal: C++26 compiler support
Características principales del lenguaje C++26
|
Característica de 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 los literales de cadena no codificables sean incorrectos | 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 conversión desde void * ( FTM ) * | P2738R1 | 14 | 17 | ||||||||
| DR20: Sobre la ignorabilidad de los atributos estándar | P2552R3 | 15 | Sí | ||||||||
| DR11: Almacenamiento estático para inicializadores entre llaves | P2752R3 | 14 | |||||||||
| Mensajes generados por el usuario static_assert ( 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 conversiones aritméticas obsoletas en enumeraciones | P2864R2 | 14 | 18 | ||||||||
| DR11/20: Inicialización de parámetros de plantilla | P2308R1 | 9 | 18 | ||||||||
| Prohibir enlazar una referencia devuelta a un temporal | P2748R5 | 14 | 19 | ||||||||
| Atributos para structured bindings ( FTM ) * | P0609R3 | 15 | 19 | ||||||||
Comportamiento erróneo para
lecturas no inicializadas
,
[[
indeterminate
]]
atributo
|
P2795R5 | ||||||||||
| = delete ( "reason" ) ; ( FTM ) * | P2573R2 | 15 | 19 | ||||||||
| Variadic friends ( FTM ) * | P2893R3 | 15 | 20 | ||||||||
| DR98: Aclarando reglas para la omisión de llaves en aggregate initialization | 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 ) * ( FTM ) * | P2747R2 | 15 | 20 | ||||||||
| Declaración de enlace estructurado como condición ( FTM ) * | P0963R3 | 15 |
6
(parcial)*
21 |
||||||||
| Ordenamiento de restricciones que involucran expresiones de plegado ( FTM ) * | P2963R3 | 19 | |||||||||
| Eliminar un puntero a un tipo incompleto debería ser incorrecto | P3144R2 | 15 | 19 | 6.7 | |||||||
| Enlaces estructurados pueden introducir un pack ( FTM ) * | P1061R10 | 21 | |||||||||
| constexpr enlaces estructurados y referencias a constexpr variables | P2686R5 | 6.7 | |||||||||
| constexpr excepciones : [1] , [2] ( FTM ) * | P3068R6 | ||||||||||
| Coma variádica de Oxford | P3176R1 | 15 | 20 | ||||||||
| Eliminación de comparaciones de arrays obsoletas | P2865R6 | 15 | 20 | ||||||||
#embed
(
FTM
)
*
|
P1967R14 | 15 | 19 * | ||||||||
| Parámetros de plantilla de concepto y variable-template ( FTM ) * | P2841R7 | ||||||||||
| Trivial relocatability ( FTM ) * | P2786R13 | 21 * | |||||||||
| Uniones triviales ( FTM ) * | P3074R7 | ||||||||||
| Puntos de control observables | P1494R5 | ||||||||||
| Contratos ( FTM ) * | P2900R14 | ||||||||||
|
Característica de 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 de C++26
|
Documento(s)
|
GCC libstdc++
|
Clang libc++
|
MSVC STL
|
Apple Clang*
|
|
|---|---|---|---|---|---|---|
| Prueba de éxito o fallo de <charconv> funciones ( 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 utilizan std::format ( FTM ) * | P2587R3 | 14 | ||||
| Verificación de tipos en argumentos de formato ( FTM ) * | P2757R3 | 15 | ||||
| Formateo de punteros ( FTM ) * | P2510R3 | 14 * | 17 * | 19.40* * | ||
| Soporte de hashing para las clases de valor de std::chrono ( FTM ) * | P2592R3 | |||||
| <rcu> : Actualización de Copia de Lectura ( FTM ) * | P2545R4 | |||||
| <hazard_pointer> : Punteros de peligro ( FTM ) * | P2530R3 | |||||
| A prueba de ADL std::projected | P2538R1 | 14 * | 18 * | 19.38* * | 16.0.0* | |
| constexpr ordenación estable ( 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 | |||||
| Extender los contenedores asociativos con las sobrecargas heterogéneas restantes ( FTM ) * | P2363R5 | |||||
| Habilitar el uso de std::weak_ptr como claves en contenedores asociativos desordenados ( FTM ) * | P1901R2 | |||||
| Manejadores nativos en flujos de archivos ( FTM ) * | P1759R6 | 14 | 18 | 16.0.0* | ||
| Interconexión de flujos de cadena con std::string_view ( FTM ) * | P2495R3 | 19 | ||||
| Interfaz std::bitset con std::string_view ( FTM ) * | P2697R1 | 18 | 16.0.0* | |||
| Más constexpr para <cmath> y <complex> ( FTM ) * ( FTM ) * | P1383R2 | 4.6 (parcial)* | ||||
| Adición de los nuevos prefijos SI 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 | |||||
| std::copyable_function ( FTM ) * | P2548R6 | 16 | ||||
| std::bind_front , std::bind_back , y std::not_fn para callables NTTP ( FTM ) * ( FTM ) * ( FTM ) * | P2714R1 | |||||
| std::submdspan() ( MFP ) * |
P2630R4
P3355R1 |
|||||
| Lenguaje independiente: Opcional ::operator new | P2013R5 | N/A | ||||
| Independiente std::char_traits , std::errc e instalaciones en: <charconv> , <cstdlib> , <cstring> , <cwchar> ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2338R4 | N/A | ||||
| Más facilidades independientes ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2198R7 | N/A | ||||
| Aritmética de saturación ( FTM ) * | P0543R3 | 14 | 18 | 16.0.0* | ||
| <debugging> : Soporte de depuración ( FTM ) * |
P2546R5
P2810R4 |
|||||
| <linalg> : Una interfaz de álgebra lineal basada en funciones libres que utiliza BLAS ( FTM ) * |
P1673R13
P3050R2 P3222R0 |
|||||
| Hacer la macro assert() más amigable para el usuario | P2264R7 | |||||
| Cadenas de formato en tiempo de ejecución ( FTM ) * | P2918R2 | 14 | 18 | 16.0.0* | ||
| std::span sobre una lista de inicialización ( FTM ) * | P2447R6 | 15 | 18 | 16.0.0* | ||
| std::span::at() ( FTM ) * | P2821R5 | 14 | 18 | 16.0.0* | ||
| Se añadió el protocolo de tupla a std::complex ( FTM ) * | P2819R2 | 15 | 19 | |||
| Una nueva especificación para std::generate_canonical | P0952R2 | 19.42* | ||||
| Eliminando el 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 las 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 únicamente referencias a 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 strings y string views ( FTM ) * | P2591R5 | 15 | 19 | |||
| Habilitar la inicialización de lista para algoritmos ( FTM ) * |
P2248R8
P3217R0 |
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 | 19 (parcial) * | |||
| Diseños de mdspan con relleno ( FTM ) * | P2642R6 | |||||
| Nueva CTAD para std::span y std::mdspan con constantes integrales | P3029R1 | 19 | ||||
| Máximo y mínimo atómicos ( FTM ) * | P0493R5 | |||||
| std::formatter<std::filesystem::path> ( FTM ) * | P2845R8 | |||||
| Imprimir Líneas en Blanco con std::println() ( FTM ) * | P3142R0 | 14 * | 19 * | 19.41* * | ||
| Desdeprecar std::polymorphic_allocator::destroy | P2875R4 | 15 | 19.41* | |||
| Eliminación de strstreams obsoletos | P2867R2 | 19 | ||||
| Eliminación de las API obsoletas de acceso atómico para std::shared_ptr | P2869R4 | |||||
| Eliminando std::wstring_convert | P2872R3 | 19 | ||||
| DR23: Permitir una implementación eficiente de std::print ( FTM ) * |
P3107R5
P3235R3 |
19.43* | ||||
| Biblioteca de control de ejecución ( FTM ) * |
P2300R10
P3396R0 |
|||||
| std::inplace_vector : vector redimensionable dinámicamente con capacidad fija ( FTM ) * | P0843R14 | |||||
| std::philox_engine : motor de números aleatorios basado en contador ( FTM ) * | P2075R6 | |||||
| std::optional soporte de rango ( FTM ) * | P3168R2 | |||||
| std::is_virtual_base_of : rasgo de tipo para detectar clases base virtuales ( FTM ) * | P2985R0 | 15 | 20 | |||
| std::dims para std::mdspan ( FTM ) * | P2389R2 | 19 | ||||
| DR11: Especificación formal del tipo de std::ignore | P2968R2 | 15 | 19 | 19.42* | ||
| DR20: Eliminar el requisito de referencia común de los conceptos invocables indirectamente ( FTM ) * | P2997R1 | 15 | 19 | 19.42* | ||
| Desaprobando std::is_trivial y std::is_trivial_v | P3247R2 | 15 | 21 | |||
| DR20: Objetos de función de algoritmos | P3136R1 | Sí | 14 | 19.39* | 14.0.3* | |
| std::ranges::cache_latest_view ( FTM ) * | P3138R5 | 15 | ||||
| Restringiendo std::expected operadores de igualdad ( FTM ) * | P3379R0 | 15 | ||||
| std::aligned_accessor : un std::mdspan accessor que expresa sobrealineación de puntero ( FTM ) * | P2897R7 | 21 | ||||
| std::is_sufficiently_aligned : verifica la precondición de alineación de un puntero ( FTM ) * | P2897R7 | 21 | ||||
| std::atomic_ref::address() ( FTM ) * | P2835R7 | |||||
| DR11/20: Tipos con calificadores cv en std::atomic y std::atomic_ref | P3323R1 | 19.44* | ||||
| constexpr std::atomic y std::atomic_ref ( FTM ) * | P3309R3 | |||||
| constexpr para algoritmos de memoria especializados ( FTM ) * |
P3508R0
P3369R0 |
15 | ||||
| <stdbit.h> y <stdckdint.h> | P3370R1 | 15 | ||||
| <simd> : tipos de datos paralelos ( FTM ) * ( FTM ) * |
P1928R15
P3430R3 P3441R2 P3287R3 P2663R7 P2933R4 |
|||||
| Una utilidad para crear entornos de ejecución | P3325R5 | |||||
| constexpr para tipos de excepción, ej. std::bad_alloc , std::bad_cast etc. ( FTM ) * |
P3068R6
P3378R2 |
|||||
| Rasgos y operaciones de reubicación trivial ( FTM ) * | P2786R13 | |||||
Desactivar y desaprobar
std::memory_order::consume
|
P3475R1 | |||||
| Colocar std::monostate en <utility> | P0472R3 | 15 | 21 | 19.50* | ||
| std::indirect ( FTM ) * | P3019R14 | |||||
| std::polymorphic ( FTM ) * | P3019R14 | |||||
|
Más
constexpr
para contenedores y adaptadores de contenedores:
std::deque
,
std::flat_map
,
std::flat_multimap
,
std::flat_set
,
std::flat_multiset
,
std::forward_list
,
std::list
,
std::map
,
std::multimap
,
std::queue
,
std::priority_queue
,
std::set
,
std::multiset
,
std::stack
,
std::unordered_map
,
std::unordered_multimap
,
std::unordered_set
, y
std::unordered_multiset
|
P3372R3 | |||||
| constexpr std::inplace_vector para tipos no triviales ( FTM ) * | P3074R7 | |||||
| std::ranges::to_input_view ( FTM ) * | P3137R3 | 15 | ||||
| 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 eliminados ( FTM ) * | P0447R28 | |||||
| <contracts> : Soporte para manejo de violación de contratos ( FTM ) * | P2900R14 | |||||
| Fortalecimiento de la biblioteca estándar ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P3471R4 | 15 (parcial)* | 19.44* (parcial)* | |||
|
Biblioteca independiente:
<algorithm>
,
<numeric>
,
<random>
, (
<execution>
,
<memory>
)
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * |
P2976R1 | |||||
| DR20: Conversión de iteradores contiguos a punteros | P3349R0 | 15 | ||||
|
Característica de C++26 |
Documento(s) |
GCC libstdc++
|
Clang libc++
|
MSVC STL
|
Apple Clang*
|
*
- pase el cursor sobre una celda marcada con el asterisco
*
para ver notas adicionales emergentes.
DR
nn
- el número
nn
después de "DR" denota la revisión objetivo de C++ a la que se aplica el Informe de Defectos, por ejemplo, DR20 → C++20.
Enlaces externos
| 1. | C++26 - Wikipedia |