Apoyo de compiladores para C++26
De cppreference.com
< cpp | compiler support
* - planea sobre el número de versión para ver las notas
Características principales del lenguaje C++26
| Característica de C++26 |
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 |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DR98: Eliminar el comportamiento no definido del análisis léxico. | [https://wg21.link/P2621R3 [HTTPS://WG21.LINK/P2621R3 [1] P2621R3]] |
Sí | 3.3 | |||||||||||
| DR98: Hacer que los literales de cadena no codificables estén mal formados. | [https://wg21.link/P1854R4 [HTTPS://WG21.LINK/P1854R4 [2] P1854R4]] |
14 | 14 | |||||||||||
| Cadenas no evaluadas | [https://wg21.link/P2361R6 [HTTPS://WG21.LINK/P2361R6 [3] P2361R6]] |
14 | 17 (parcial)* 18 |
|||||||||||
Añadir @, $, y ` al juego de caracteres básico.
|
[https://wg21.link/P2558R2 [HTTPS://WG21.LINK/P2558R2 [4] P2558R2]] |
15 | Sí | |||||||||||
Conversión constexpr a partir de void*.
|
[https://wg21.link/P2738R1 [HTTPS://WG21.LINK/P2738R1 [5] P2738R1]] |
14 | 17 | |||||||||||
| DR20: Sobre la ignorancia de los atributos estándar. | [https://wg21.link/P2552R3 [HTTPS://WG21.LINK/P2552R3 [6] P2552R3]] |
Sí | ||||||||||||
| DR11: Almacenamiento estático para inicializadores con llaves. | [https://wg21.link/P2752R3 [HTTPS://WG21.LINK/P2752R3 [7] P2752R3]] |
14 | ||||||||||||
| Mensajes static_assert generados por usuario. | [https://wg21.link/P2741R3 [HTTPS://WG21.LINK/P2741R3 [8] P2741R3]] |
14 | 17 | |||||||||||
| Variables de marcador de posición sin nombre. | [https://wg21.link/P2169R4 [HTTPS://WG21.LINK/P2169R4 [9] P2169R4]] |
14 | 18 | |||||||||||
| Indexación de paquetes. | [https://wg21.link/P2662R3 [HTTPS://WG21.LINK/P2662R3 [10] P2662R3]] |
15 | 19 | |||||||||||
| Eliminación de la conversión aritmética obsoleta en las enumeraciones. | [https://wg21.link/P2864R2 [HTTPS://WG21.LINK/P2864R2 [11] P2864R2]] |
14 | 18 | |||||||||||
| DR11/20: Inicialización de parámetros de plantilla. | [https://wg21.link/P2308R1 [HTTPS://WG21.LINK/P2308R1 [12] P2308R1]] |
18 | ||||||||||||
| No permitir vincular una referencia devuelta a un temporal | [https://wg21.link/P2748R5 [HTTPS://WG21.LINK/P2748R5 [13] P2748R5]] |
14 | 19 | |||||||||||
| Atributos para vínculos estructurados. | [https://wg21.link/P0609R3 [HTTPS://WG21.LINK/P0609R3 [14] P0609R3]] |
15 | 19 | |||||||||||
| Comportamiento erróneo para lecturas no inicializadas. | [https://wg21.link/P2795R5 [HTTPS://WG21.LINK/P2795R5 [15] P2795R5]] |
|||||||||||||
= delete("razón");
|
[https://wg21.link/P2573R2 [HTTPS://WG21.LINK/P2573R2 [16] P2573R2]] |
15 | 19 | |||||||||||
Amigos (friend) variádicos.
|
[https://wg21.link/P2893R3 [HTTPS://WG21.LINK/P2893R3 [17] P2893R3]] |
15 | 20 | |||||||||||
| DR98: Aclaración de las reglas para la elisión de llaves en la inicialización de agregados. | [https://wg21.link/P3106R1 [HTTPS://WG21.LINK/P3106R1 [18] P3106R1]] |
Sí | 17 | |||||||||||
| DR20: No permitir que las declaraciones de módulos sean macros. | [https://wg21.link/P3034R1 [HTTPS://WG21.LINK/P3034R1 [19] P3034R1]] |
15 | ||||||||||||
| DR11: Los bucles infinitos triviales no son un comportamiento no definido. | [https://wg21.link/P2809R3 [HTTPS://WG21.LINK/P2809R3 [20] P2809R3]] |
14 | 19 | |||||||||||
constexpr new de ubicación.
|
[https://wg21.link/P2747R2 [HTTPS://WG21.LINK/P2747R2 [21] P2747R2]] |
15 | 20 | |||||||||||
| Declaración de vinculación estructurada como condición. | [https://wg21.link/P0963R3 [HTTPS://WG21.LINK/P0963R3 [22] P0963R3]] |
15 | 6 (parcial)* | |||||||||||
| Ordenación de constraints que involucran expresiones de pliegue. | [https://wg21.link/P2963R3 [HTTPS://WG21.LINK/P2963R3 [23] P2963R3]] |
19 | ||||||||||||
| Eliminar un puntero a un tipo incompleto debe estar mal formado. | [https://wg21.link/P3144R2 [HTTPS://WG21.LINK/P3144R2 [24] P3144R2]] |
15 | 19 | |||||||||||
| Los vínculos estructurados pueden introducir un paquete. | [https://wg21.link/P1061R10 [HTTPS://WG21.LINK/P1061R10 [25] P1061R10]] |
|||||||||||||
Vínculos estructurados constexpr y referencias a variables constexpr.
|
[https://wg21.link/P2686R5 [HTTPS://WG21.LINK/P2686R5 [26] P2686R5]] |
|||||||||||||
Excepciones constexpr
|
[https://wg21.link/P3068R6 [HTTPS://WG21.LINK/P3068R6 [27] P3068R6]] |
|||||||||||||
| Coma variádica de Oxford. | [https://wg21.link/P3176R1 [HTTPS://WG21.LINK/P3176R1 [28] P3176R1]] |
15 | 20 | |||||||||||
| Eliminación de comparaciones obsoletas de arrays. | [https://wg21.link/P2865R5 [HTTPS://WG21.LINK/P2865R5 [29] P2865R5]] |
|||||||||||||
| Característica de C++26 |
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 |
Características de la biblioteca de C++26
| Característica de C++26 |
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 |
|
|---|---|---|---|---|---|---|---|---|---|
| Prueba de éxito o fracaso de las funciones <charconv>. | P2497R0 | 14 | 18 | ||||||
| std::text_encoding: identificación de codificaciones de texto. | P1885R12 P2862R1 |
14 | |||||||
| Las sobrecargas aritméticas de std::to_string y std::to_wstring usan std::format. | P2587R3 | 14 | |||||||
| Comprobación de tipos de argumentos de formato. | P2757R3 | 15 | |||||||
| Formato de punteros. | P2510R3 | 14* | 17* | 19.40** | |||||
| Compatibilidad con hashing para clases valor de std::chrono. | P2592R3 | ||||||||
| Lectura-copia-actualización | P2545R4 | ||||||||
| Punteros riesgo (hazard) | P2530R3 | ||||||||
| std::projected anti-ADL (búsqueda dependiente de argumento). | P2538R1 | 14* | 18* | 19.38** | |||||
Ordenamiento constexpr estable.
|
P2562R1 | ||||||||
visit para miembros.
|
P2637R3 | 15 | 18 (parcial)* 19 |
||||||
| std::is_within_lifetime | P2641R4 | ||||||||
| Ampliación de contenedores asociativos con las sobrecargas heterogéneas restantes. | P2363R5 | ||||||||
| Habilitación del uso de std::weak_ptr como claves en contenedores asociativos no ordenados. | P1901R2 | ||||||||
| Identificadores nativos en flujos de archivos. | P1759R6 | 14 | 18 | ||||||
| Interfaz de secuencias de cadenas con std::string_view. | {{{reference}}} | 19 | |||||||
| Interfaz de std::bitset con std::string_view. | P2697R1 | 18 | |||||||
Más constexpr para <cmath> y <complex>
|
P1383R2 | 4.6 (parcial)* | |||||||
| Adición de los nuevos prefijos SI 2022 en las proporciones: std::quecto, std::ronto, std::ronna, and std::quetta | P2734R0 | 14 | 17 | ||||||
| std::function_ref: referencia invocable de tipo borrado. | P0792R14 | ||||||||
| std::copyable_function | P2548R6 | ||||||||
| std::bind_front, std::bind_back, y std::not_fn a parámetros de plantilla de no tipo invocables | P2714R1 | ||||||||
| std::submdspan() | P2630R4 P3355R1 |
||||||||
| Lenguaje independiente: ::operator new opcional | P2013R5 | N/A | |||||||
| Saturación aritmética | P0543R3 | 14 | 18 | ||||||
| <debugging>: Apoyo de depuración | P2546R5 P2810R3 |
||||||||
| <linalg>: Una interfaz de álgebra lineal de funciones libres basada en BLAS | P1673R13 P3050R2 P3222R0 |
||||||||
| Cómo hacer que la macro assert() sea fácil de usar | P2264R7 | ||||||||
| Cadenas de formato en tiempo de ejecución | P2918R2 | 14 | 18 | ||||||
| std::span sobre una lista de inicializadores | P2447R6 | 18 | |||||||
| std::span::at() | P2821R5 | 14 | 18 | ||||||
| Se agregó el protocolo de tupla a std::complex | P2819R2 | 19 | |||||||
| Una nueva especificación para std::generate_canonical | P0952R2 | 19.42* | |||||||
| Eliminación del tipo definido obsoleto std::allocator::is_always_equal | P2868R3 | 18 | |||||||
| Eliminar la sobrecarga de la función std::basic_string::reserve() que no acepta argumentos | P2870R3 | 18 | |||||||
| Eliminación de facetas de conversión Unicode obsoletas (<codecvt>) | P2871R3 | 18 | |||||||
| Implementación independiente: eliminación de std::strtok | P2937R0 | 14 | 19.40* | ||||||
| Biblioteca independiente: clases parciales | P2407R5 | 14 | 19.42* | ||||||
| Biblioteca independiente: inout, expected, span, | P2833R2 | 14 | 19.42* | ||||||
| DR23: std::basic_const_iterator debe seguir la convertibilidad de su tipo subyacente | P2836R1 P2950R0 |
14 | 19.40* | ||||||
| DR20: std::make_format_args ahora acepta solo referencias a l-valor en lugar de referencias de reenvío | P2905R2 | 14 | 18 | 19.40* | |||||
| DR20: Corregir el formato de las unidades de código como números enteros | P2909R4 | 13.3 | 18 | 19.40* | |||||
| views::concat | P2542R8 | 15 | |||||||
| Concatenación de strings y string views | P2591R5 | 15 | 19 | ||||||
| Habilitar la inicialización de lista para los algoritmos | P2248R8 P3217R0 |
15 | |||||||
| std::ranges::generate_random | P1068R11 | ||||||||
| Comparaciones para std::reference_wrapper | P2944R3 | 14 | 19 (parcial)* | ||||||
| Padded mdspan layouts | P2642R6 | ||||||||
| Nueva deducción de argumentos para plantillas de clase (CTAD) para std::span y std::mdspan con constantes integrales. | P3029R1 | 19 | |||||||
| Máximo y mínimo atómico | P0493R5 | ||||||||
| std::formatter<std::filesystem::path> | P2845R8 | ||||||||
| Impresión de líneas en blanco con std::println() | P3142R0 | 14* | 19* | 19.41** | |||||
| Volver a poner std::polymorphic_allocator::destroy en uso | P2875R4 | 15 | 19.41* | ||||||
Eliminación de flujos de cadena (strstreams) obsoletos
|
P2867R2 | 19 | |||||||
| Eliminación de las API de acceso atómico de std::shared_ptr obsoletas | P2869R4 | ||||||||
| Eliminación de std::wstring_convert | P2872R3 | 19 | |||||||
| DR23: Permitir una implementación eficiente de std::print | P3107R5 P3235R3 |
19.43* | |||||||
| Biblioteca de ejecución | P2300R10 P3396R0 |
||||||||
| std::inplace_vector: Vector dinámicamente redimensionable con capacidad fija | P0843R14 | ||||||||
| std::philox_engine: motor de números aleatorios basado en contador | P2075R6 | ||||||||
| Apoyo de rangos para std::optional | P3168R2 | ||||||||
| std::is_virtual_base_of: Rasgo de tipo para detectar clases base virtuales | P2985R0 | 15 | 20 | ||||||
| std::dims para std::mdspan | 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 indirectamente invocables | P2997R1 | 15 | 19 | 19.42* | |||||
| Obsolescencia de std::is_trivial y std::is_trivial_v | P3247R2 | ||||||||
| DR20: Algoritmos objeto función | P3136R1 | Sí | Sí | 19.39* | Sí | ||||
| views::cache_latest | P3138R5 | ||||||||
| Restricción de los operadores de igualdad de std::expected | P3379R1 | 15 | |||||||
| std::aligned_accessor | P2897R7 | ||||||||
| std::atomic_ref::address() | P2835R7 | ||||||||
DR11/20: Tipos calificados const volatile en std::atomic y std::atomic_ref
|
P3323R1 | ||||||||
constexpr std::atomic y std::atomic_ref
|
P3309R3 | ||||||||
constexpr para algoritmos de memoria especializados
|
P3508R0 P3369R0 |
||||||||
| Se agregaron nuevos encabezados de biblioteca de C23 | P3370R1 | ||||||||
| std::simd: tipos dato paralelos | P1928R15 | ||||||||
| Un servicio para crear entornos de ejecución | P3325R5 | ||||||||
constexpr para tipos excepción, p. ej., std::bad_alloc, std::bad_cast etc.
|
P3068R6 | ||||||||
| Característica de C++26 |
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 |