C++14
De es.cppreference.net
< cpp
C++14 es una versión menor después de la versión principal C++11, que presenta principalmente mejoras menores y correcciones de defectos. Su aprobación fue anunciada el 18 de agosto de 2014. Fue lanzada el 15 de diciembre de 2014.
Antes de su aprobación, a veces se usaba C++1y para indicar su lanzamiento en la década de 2010.
| Esta sección está incompleta |
Nuevas características del lenguaje
- plantillas de variables
- lambdas genéricas
- captura de inicialización de lambda
- elisión de new/delete
- restricciones relajadas en funciones constexpr
- literales binarios
- separadores de dígitos
- deducción del tipo de retorno para funciones
- clases agregadas con inicializadores de miembros no estáticos por defecto.
Nuevas características de la biblioteca
- std::make_unique
- std::shared_timed_mutex y std::shared_lock
- std::integer_sequence
- std::exchange
- std::quoted
- y muchas mejoras pequeñas a las instalaciones de biblioteca existentes, como
- sobrecargas de dos rangos para algunos algoritmos
- versiones de alias de tipo de los traits de tipo
- literales definidos por el usuario para basic_string, duration y complex
- etc.
| Esta sección está incompleta |
Informes de defectos
Soporte del compilador
Características del núcleo del lenguaje C++14
| Característica de C++14 |
Documento(s) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ex PGI)* |
Nvidia nvcc |
Cray |
Embarcadero C++ Builder |
IBM Open XL C++ for AIX |
IBM Open XL C++ for z/OS |
IBM XL C++ |
Sun/Oracle C++ |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Redacción ajustada para conversiones contextuales | N3323 | 4.9 | 3.4 | 18.0* | Sí | 4.9 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| Literales binarios (FTM)* | N3472 | 4.3* 4.9 |
2.9 | 19.0 (2015)* | Sí | 4.10 | 11.0 | 2015 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |
| decltype(auto), Deducción del tipo de retorno para funciones normales (FTM)* (FTM)* | N3638 | 4.8 (parcial)* 4.9 |
3.3 (parcial)* 3.4 |
19.0 (2015)* | Sí | 4.9 | 15.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| Capturas de lambda inicializadas/generalizadas (init-capture) (FTM)* | N3648 | 4.5 (parcial) 4.9 |
3.4 | 19.0 (2015)* | Sí | 4.10 | 15.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.15 | |
| Expresiones lambda genéricas (FTM)* | N3649 | 4.9 | 3.4 | 19.0 (2015)* | Sí | 4.10 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| Plantillas de variables (FTM)* | N3651 | 5 | 3.4 | 19.0 (Update 2)* | Sí | 4.11 | 17.0 | 17.4 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
constexpr extendidoconstexpr (FTM)*
|
N3652 | 5 | 3.4 | 19.10* | Sí | 4.11 | 17.0 | 17.4 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| Agregados con inicializadores de miembros por defecto (FTM)* | N3653 | 5 | 3.3 | 19.10* | Sí | 4.9 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.14 | |
| Omisión/extensión de asignaciones de memoria | N3664 | N/A | 3.4 | N/A | Sí | N/A | N/A | 17.4 | N/A | 8.6 | 10.3 | 17.1.0 | 1.1.0 | N/A | N/A | |
[[deprecated]] atributo deprecated
|
N3760 | 4.9 | 3.4 | 19.0 (2015)* | Sí | 4.9 | 15.0* 16.0 |
16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |
| Desasignación con tamaño (FTM)* | N3778 | 5 | 3.4 | 19.0 (2015)* | Sí | 4.10.1 | 17.0 | 16.1 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.14 | ||
| Comilla simple como separador de dígitos | N3781 | 4.9 | 3.4 | 19.0 (2015)* | Sí | 4.10 | 16.0 | 2015 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |
| Característica de C++14 |
Documento(s) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ex PGI)* |
Nvidia nvcc |
Cray |
Embarcadero C++ Builder |
IBM Open XL C++ for AIX |
IBM Open XL C++ for z/OS |
IBM XL C++ |
Sun/Oracle C++ |
Características de la biblioteca C++14
| Característica de C++14 |
Documento(s) |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |
|
|---|---|---|---|---|---|---|---|---|---|
constexpr para <complex>
|
N3302 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| Objetos función de operador transparentes (FTM)* | N3421 | 4.9 | 3.4 | 18.0* | Sí | 17.1.0 | 5.15 | 10.3 | |
| std::result_of y SFINAE (FTM)* | N3462 | 5 | Sí | 19.0 (Update 2)* | Sí | 17.1.0 | 5.15 | 10.3 | |
constexpr para <chrono>
|
N3469 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
constexpr para <array>
|
N3470 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
constexpr para <initializer_list>, <utility> y <tuple>
|
N3471 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| Mejora de std::integral_constant (FTM)* | N3545 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| Literales definidos por el usuario para <chrono> y <string> (FTM)* (FTM)* | N3642 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| Iteradores de avance nulos (FTM)* | N3644 | 5 (parcial) 10 |
3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| std::quoted (FTM)* | N3654 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| std::make_unique (FTM)* | N3656 | 4.9 | 3.4 | 18.0* | Sí | 17.1.0 | 5.15 | 10.3 | |
| Búsqueda asociativa heterogénea (FTM)* | N3657 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| std::integer_sequence (FTM)* | N3658 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| std::shared_timed_mutex | N3659 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| std::exchange (FTM)* | N3668 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
Corrección de constexpr funciones miembro sin const
|
N3669 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| Acceso a tuplas por tipo: std::get<T>() (FTM)* | N3670 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| Doble rango std::equal, std::is_permutation, std::mismatch (FTM)* | N3671 | 5 | 3.4 | 19.0 (2015)* | Sí | 17.1.0 | 5.15 | 10.3 | |
| Plantillas de alias para traits de transformación (FTM)* | N3655 | 4.9 | 3.4 | 18.0* | Sí | ||||
Literales definidos por el usuario para std::complex (FTM)*
|
N3779 | 4.9 | 3.4 | 19.0 (2015)* | Sí | ||||
| DR11: std::is_null_pointer (FTM)* | LWG2247 | 4.9 | 3.4 | 19.0 (2015)* | |||||
| std::is_final (FTM)* | LWG2112 | 5 | 3.4 | 19.0 (2015)* | |||||
| std::make_reverse_iterator (FTM)* | LWG2285 | 5 | 3.4 | 19.0 (2015)* | |||||
| std::shared_timed_mutex (FTM)* | N3891 | 4.9 | 3.5 | 19.0 (2015)* | Sí | ||||
| std::tuple_element_t (FTM)* | N3887 | 4.10 | 3.5 | 19.0 (2015)* | Sí | ||||
| Característica de C++14 |
Documento(s) |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |
* - pase el cursor sobre una celda marcada con el asterisco * para ver notas emergentes adicionales.
DRnn - el número nn después de "DR" denota la revisión de C++ objetivo a la que se aplica el Informe de defecto, por ejemplo, DR20 → C++20.
Enlaces externos
| 1. | C++14 - Wikipedia |
| 2. | Ejemplos de C++14 en funcionamiento |