Apoyo de compiladores para C++23
De cppreference.com
< cpp | compiler support
Características principales del lenguaje C++23
| Característica de C++23 |
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 |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| El tipo del literal para size_t (con signo) (FTM)* | P0330R8 | 11 | 13 | 19.43* |
13.1.6* |
6.5 | 2022.2 | 23.9 | ||||||
Hacer () más opcional para lambdas
|
P1102R2 | 11 | 13 | 19.44* |
13.1.6* |
6.3 | 2022.2 | 22.5 | ||||||
| if consteval (FTM)* | P1938R3 | 12 | 14 | 19.44* |
14.0.0* |
6.3 | 2022.2 | 24.1 | ||||||
| Eliminar apoyo para recolección de basura | P2186R2 | 12 | N/A | 19.30* | N/A | N/A | ||||||||
| Conversiones contextuales estrechantes en static_assert y constexpr if | P1401R5 | 9 | 13 (partial)* 14 |
19.44* |
14.0.0* |
2022.2 | 20.7 | |||||||
| Recorte de espacios en blanco antes del empalme de línea | P2223R2 | Sí | Sí | 19.50* | Sí | 6.7 | 2022.2 | Sí | ||||||
| Hacer obligatoria la distribución del orden de declaración | P1847R4 | Sí | Sí | 19.30* | Sí | 2022.2 | Sí | |||||||
| Eliminar el modo mezclado de la concatenación de literales de cadena | P2201R1 | Sí | Sí | 19.44* | Sí | Sí | Sí | Sí | ||||||
Funciones miembro de objeto explícito (deducción de this) (FTM)*
|
P0847R7 | 14 | 18 19* |
19.32* (partial)* 19.43* |
6.3 | 22.5 | ||||||||
auto(x) y auto{x} (FTM)*
|
P0849R8 | 12 | 15 | 19.50* |
14.0.3* |
6.4 | 2022.2 | 23.3 | ||||||
#elifdef y #elifndef
|
P2334R1 | 12 | 13 | 19.40* |
13.1.6* |
6.5 | 2022.2 | 23.9 | ||||||
| Variables no literales (así como etiquetas y sentencias goto) en funciones constexpr (FTM)* | P2242R3 | 12 | 15 | 19.43* |
14.0.3* |
6.3 | 2022.2 | 22.5 | ||||||
| Codificación consistente de literales de carácter | P2316R2 | Sí | Sí | 19.30* | Sí | Sí | 2022.2 | Sí | ||||||
| Juegos de caracteres y codificaciones | P2314R4 | 10 | Sí | 19.51* | Sí | Sí | 2022.2 | Sí | ||||||
| Extender la instrucción de inicialización para permitir la declaración de alias en el bucle for | P2360R0 | 12 | 14 | 19.50* |
14.0.0* |
2022.2 | ||||||||
| Operador de subíndice multidimensional (FTM)* | P2128R6 | 12 | 15 | 19.42* |
14.0.3* |
2022.2 | ||||||||
| Atributos en lambdas | P2173R1 | 9 | 13 | 19.44* |
13.1.6* |
6.6 | 2022.2 | 22.5 | ||||||
#warning
|
P2437R1 | Yes* | Sí | 19.50* |
15.0.0* |
6.5 | 2023.2 | Sí | ||||||
| Eliminar literales de caracteres anchos no codificables y literales de caracteres anchos de múltiples caracteres | P2362R3 | 13 | 14 | 19.51* |
15.0.0* |
6.7 | 2023.2 | |||||||
| Etiquetas al final de las sentencias compuestas | P2324R2 | 13 | 16 | 19.51* |
16.0.0* |
6.5 | 2023.2 | 23.9 | ||||||
| Secuencias de escape delimitadas | P2290R3 | 13 | 15 | 19.50* |
15.0.0* |
6.7 | 2023.2 | |||||||
| Secuencias de escape universales denominadas (FTM)* | P2071R2 | 13 | 15 | 19.51* |
15.0.0* |
6.7 | 2023.2 | |||||||
Relajar algunas restricciones de constexpr (FTM)*
|
P2448R2 | 13 | 17 (partial) 19 |
19.51* | 2024.0 (partial) | |||||||||
| Movimiento implícito más simple (FTM)* | P2266R3 | 13 | 13 | 19.50* | 6.7 | 2022.2 | ||||||||
static operator() (FTM)*
|
P1169R4 | 13 | 16 | 19.44* |
16.0.0* |
6.7 | 2023.2 | |||||||
| Requisitos para los tipos de punto flotante extendidos opcionales | P1467R9 | 13 | N/A | 6.4 | ||||||||||
| Deducción de argumentos de plantilla de clase a partir de constructores heredados | P2582R1 | 14 | 19.51* | |||||||||||
Attribute [[assume]]
|
P1774R8 | 13 | 19 | 19.51* | ||||||||||
| Apoyo para UTF-8 como codificación de archivo fuente portátil | P2295R6 | 13* | 15* | 19.0 (Update 2)** |
15.0.0* |
2023.2 | ||||||||
static operator[] (FTM)*
|
P2589R1 | 13 | 16 | 19.44* |
16.0.0* |
6.7 | 2023.2 | |||||||
Permitir variables static constexpr en funciones constexpr (FTM)*
|
P2647R1 | 13 | 16 | 19.51* |
16.0.0* |
2023.2 | ||||||||
| Extender la vida útil de los temporales en el inicializador del bucle basado en rangos (FTM)* | P2644R1 P2718R0 CWG2659 |
15 | 19 | 19.51* | ||||||||||
| DR11: Cambiar el ámbito del tipo de retorno posterior de las expresiones lambda | P2036R3 P2579R0 |
16 | 17 | 19.50* | 2023.2 | |||||||||
| DR20: Exportaciones significativas | P2615R1 | 15 | 17 (partial) | 19.28 (16.8)* | ||||||||||
DR20: consteval debe propagarse hacia arriba. (FTM)*
|
P2564R3 | 14 | 17 | 19.52* |
16.0.0* |
6.7 | 2024.0 | |||||||
| DR98: Sintaxis de identificadores de C++ según el Anexo 31 del estándar Unicode | P1949R7 | 12 | 14 | 19.50* |
14.0.0* |
6.4 | 2022.2 | |||||||
| DR11: Permitir atributos duplicados | P2156R1 | 11 | 13 | 19.50* |
13.1.6* |
6.5 | 23.9 | |||||||
DR20: Ajustar el valor de la macro de prueba de característica __cpp_concepts
|
P2493R0 | 12 | 19.50* | 6.4 | 23.3 | |||||||||
DR98: Relajar los requisitos sobre wchar_t para que coincidan con las prácticas existentes
|
P2460R2 | Sí | Sí | 19.44* |
15.0.0* |
N/A | 2023.2 | |||||||
| DR11: Usar punteros y referencias desconocidos en expresiones constantes | P2280R4 | 14 | 20* | 19.50* | ||||||||||
| DR20: El operador de igualdad que estás buscando | P2468R2 | 13 | 16 | 19.36* |
16.0.0* |
2023.2 | ||||||||
DR20: Compatibilidad y portabilidad de char8_t (FTM)*
|
P2513R4 | 13 | 16 | 19.34* |
16.0.0* |
2023.2 | ||||||||
DR98/11: Aclarar la notificación de directivas de diagnóstico y permitir static_assert de expresiones no dependientes de valor en un contexto de plantilla
|
CWG2518 | 13 | 17 | 16.0* (parcial)* 19.40* |
||||||||||
| Característica de C++23 |
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 |
