Apoyo de compiladores para C++17
De cppreference.com
< cpp | compiler support
Características principales del lenguaje C++17
| Característica de C++17 |
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 |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID: Nuevas reglas de auto para inicialización de lista directa
|
[https://wg21.link/N3922 [HTTPS://WG21.LINK/N3922 [1] N3922]] |
6 | 3.9 | 19.12* | Sí | 4.14 | 19.0 | 19.1 | 11.0 | |||||
| static_assert sin mensaje | [https://wg21.link/N3928 [HTTPS://WG21.LINK/N3928 [2] N3928]] |
6 | 2.5 | 19.10* | Sí | 4.12 | 18.0 | 17.7 | 11.0 | |||||
typename en un parámetro de plantilla de plantilla
|
[https://wg21.link/N4051 [HTTPS://WG21.LINK/N4051 [3] N4051]] |
5 | 3.5 | 19.0 (2015)* | Sí | 4.10.1 | 17.0 | 17.7 | Sí* | |||||
| Eliminar trígrafos | [https://wg21.link/N4086 [HTTPS://WG21.LINK/N4086 [4] N4086]] |
5 | 3.5 | 16.0* | Sí | 5.0 | 19.1 | 11.0 | ||||||
| Definición de espacios de nombre anidados | [https://wg21.link/N4230 [HTTPS://WG21.LINK/N4230 [5] N4230]] |
6 | 3.6 | 19.0 (Update 3)* | Sí | 4.12 | 17.0 | 17.7 | 11.0 | |||||
| Atributos para espacios de nombre y enumeradores | [https://wg21.link/N4266 [HTTPS://WG21.LINK/N4266 [6] N4266]] |
4.9 (partial)* 6 |
3.6 | 19.0 (2015)* | Sí | 4.11 | 17.0 | 17.7 | 11.0 | |||||
Literales de carácter u8
|
[https://wg21.link/N4267 [HTTPS://WG21.LINK/N4267 [7] N4267]] |
6 | 3.6 | 19.0 (2015)* | Sí | 4.11 | 17.0 | 17.7 | 11.0 | |||||
| Permitir evaluación constante para todos los argumentos de plantilla de no tipo | [https://wg21.link/N4268 [HTTPS://WG21.LINK/N4268 [8] N4268]] |
6 | 3.6 | 19.12* | Sí | 5.0 | 19.0.1 | 19.1 | 11.0 | |||||
| Expresiones de pliegue | [https://wg21.link/N4295 [HTTPS://WG21.LINK/N4295 [9] N4295]] |
6 | 3.6 | 19.12* | Sí | 4.14 | 19.0 | 18.1 | 11.0 | |||||
| Expresiones de pliegue unarias y paquetes de parámetros vacíos | [https://wg21.link/P0036R0 [HTTPS://WG21.LINK/P0036R0 [10] P0036R0]] |
6 | 3.9 | 19.12* | Sí | 4.14 | 19.0 | 19.1 | 11.0 | |||||
| Eliminar uso obsoleto de la palabra clave register | [https://wg21.link/P0001R1 [HTTPS://WG21.LINK/P0001R1 [11] P0001R1]] |
7 | 3.8 | 19.11* | Sí | 4.13 | 18.0 | 17.7 | 11.0 | |||||
Remover operator++(bool) obsoleto
|
[https://wg21.link/P0002R1 [HTTPS://WG21.LINK/P0002R1 [12] P0002R1]] |
7 | 3.8 | 19.11* | Sí | 4.13 | 18.0 | 17.7 | 11.0 | |||||
| Hacer las especificaciones de excepciones parte del sistema de tipos | [https://wg21.link/P0012R1 [HTTPS://WG21.LINK/P0012R1 [13] P0012R1]] |
7 | 4 | 19.12* | Sí | 4.14 | 19.0 | 19.1 | 11.0 | |||||
| Inicialización de agregados con clases base | [https://wg21.link/P0017R1 [HTTPS://WG21.LINK/P0017R1 [14] P0017R1]] |
7 | 3.9 | 19.14* | Sí | 5.0 | 19.0.1 | 19.1 | 11.0 | |||||
| __has_include en condicionales del preprocesador | [https://wg21.link/P0061R1 [HTTPS://WG21.LINK/P0061R1 [15] P0061R1]] |
5 | Sí | 19.11* | Sí | 4.13 | 18.0 | 17.7 | 11.0 | |||||
| ID: Nueva especificación para constructores heredados (ID 1941 et al) | [https://wg21.link/P0136R1 [HTTPS://WG21.LINK/P0136R1 [16] P0136R1]] |
7 | 3.9 | 19.14* | Sí | 6.1 | 19.1 | 11.0 | ||||||
Captura de lambda de *this
|
[https://wg21.link/P0018R3 [HTTPS://WG21.LINK/P0018R3 [17] P0018R3]] |
7 | 3.9 | 19.11* | Sí | 4.14 | 19.0 | 18.1 | 11.0 | |||||
| Inicialización de lista directa de enumeraciones | [https://wg21.link/P0138R2 [HTTPS://WG21.LINK/P0138R2 [18] P0138R2]] |
7 | 3.9 | 19.11* | Sí | 4.14 | 18.0 | 19.1 | 11.0 | |||||
| Expresiones lambda constexpr | [https://wg21.link/P0170R1 [HTTPS://WG21.LINK/P0170R1 [19] P0170R1]] |
7 | 5 | 19.11* | Sí | 4.14 | 19.0 | 18.1 | 11.0 | |||||
Tipos que difieren en begin y end en bucle for basado en rango
|
[https://wg21.link/P0184R0 [HTTPS://WG21.LINK/P0184R0 [20] P0184R0]] |
6 | 3.9 | 19.10* | Sí | 4.12 | 18.0 | 17.7 | 11.0 | |||||
Atributo [[fallthrough]]
|
[https://wg21.link/P0188R1 [HTTPS://WG21.LINK/P0188R1 [21] P0188R1]] |
7 | 3.9 | 19.10* | Sí | 4.13 | 18.0 | 17.7 | 11.0 | |||||
Atributo [[nodiscard]]
|
[https://wg21.link/P0189R1 [HTTPS://WG21.LINK/P0189R1 [22] P0189R1]] |
7 | 3.9 | 19.11* | Sí | 4.13 | 18.0 | 17.7 | 11.0 | |||||
Atributo [[maybe_unused]]
|
[https://wg21.link/P0212R1 [HTTPS://WG21.LINK/P0212R1 [23] P0212R1]] |
7 | 3.9 | 19.11* | Sí | 4.13 | 18.0 | 17.7 | 11.0 | |||||
| Literales de punto flotante hexadecimales | [https://wg21.link/P0245R1 [HTTPS://WG21.LINK/P0245R1 [24] P0245R1]] |
3.0 | Sí | 19.11* | Sí | 4.13 | 18.0 | 17.7 | 11.0 | |||||
| Usar atributos de espacios de nombres sin repetición | [https://wg21.link/P0028R4 [HTTPS://WG21.LINK/P0028R4 [25] P0028R4]] |
7 | 3.9 | 19.11* | Sí | 4.13 | 18.0 | 17.7 | 11.0 | |||||
| Asignación de memoria dinámica para datos sobrealineados | [https://wg21.link/P0035R4 [HTTPS://WG21.LINK/P0035R4 [26] P0035R4]] |
7 | 4 | 19.12* |
10.0.0* |
4.14 | 19.0 | 19.1 | 11.0 | |||||
| Deducción de argumentos de plantillas de clase | [https://wg21.link/P0091R3 [HTTPS://WG21.LINK/P0091R3 [27] P0091R3]] |
7 | 5 | 19.14* | Sí | 5.0 | 19.0.1 | 19.1 | 11.0 | |||||
Parámetros de plantilla de no tipo con el tipo auto
|
[https://wg21.link/P0127R2 [HTTPS://WG21.LINK/P0127R2 [28] P0127R2]] |
7 | 4 | 19.14* | Sí | 5.0 | 19.0.1 | 19.1 | 11.0 | |||||
| Elisión de copia obligatoria | [https://wg21.link/P0135R1 [HTTPS://WG21.LINK/P0135R1 [29] P0135R1]] |
7 | 4 | 19.13* | Sí | 5.0 | 19.0.1 | 19.1 | 11.0 | |||||
| Reemplazo de objetos de clase que contienen miembros de referencia | [https://wg21.link/P0137R1 [HTTPS://WG21.LINK/P0137R1 [30] P0137R1]] |
7 | 6 | 19.14* | Sí | 5.0 | 19.1 | 11.0 | ||||||
| Orden de evaluación de expresiones más estricto | [https://wg21.link/P0145R3 [HTTPS://WG21.LINK/P0145R3 [31] P0145R3]] |
7 | 4 | 19.14* | Sí | 5.0 | 19.0.1 | 19.1 | 11.0 | |||||
| Vínculos estructurados | [https://wg21.link/P0217R3 [HTTPS://WG21.LINK/P0217R3 [32] P0217R3]] |
7 | 4 | 19.11* | Sí | 4.14 | 19.0 | 18.1 | 11.0* | |||||
| Ignorar atributos desconocidos | [https://wg21.link/P0283R2 [HTTPS://WG21.LINK/P0283R2 [33] P0283R2]] |
Sí | 3.9 | 19.11* | Sí | 4.13 | 18.0 | 17.7 | 11.0 | |||||
| Instrucciones constexpr if | [https://wg21.link/P0292R2 [HTTPS://WG21.LINK/P0292R2 [34] P0292R2]] |
7 | 3.9 | 19.11* | Sí | 4.14 | 19.0 | 18.1 | 11.0 | |||||
| if y switch con un inicializador | [https://wg21.link/P0305R1 [HTTPS://WG21.LINK/P0305R1 [35] P0305R1]] |
7 | 3.9 | 19.11* | Sí | 4.14 | 18.0 | 18.1 | 11.0 | |||||
| Variables en línea | [https://wg21.link/P0386R2 [HTTPS://WG21.LINK/P0386R2 [36] P0386R2]] |
7 | 3.9 | 19.12* | Sí | 4.14 | 19.0 | 18.1 | 11.0 | |||||
| Eliminar especificaciones de excepciones dinámicas | [https://wg21.link/P0003R5 [HTTPS://WG21.LINK/P0003R5 [37] P0003R5]] |
7 | 4 | 19.10* | Sí | 4.14 | 19.0 | 19.1 | 11.0 | |||||
| Expansión de paquetes en declaraciones using | [https://wg21.link/P0195R2 [HTTPS://WG21.LINK/P0195R2 [38] P0195R2]] |
7 | 4 | 19.14* | Sí | 5.0 | 19.0 | 19.1 | 11.0 | |||||
| ID: Coincidencia de argumentos de plantilla de plantilla excluye plantillas compatibles | [https://wg21.link/P0522R0 [HTTPS://WG21.LINK/P0522R0 [39] P0522R0]] |
7 | 4 | 19.12* | Sí | 5.0 | 19.0.1 | 19.1 | 11.0 | |||||
| Característica de C++17 |
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++17
Notas:
- A partir de 2020-11-20, el último lanzamiento de Oracle Developer Studio es 12.6. Su documentación no menciona C++17.
