C++11
C++11 es la segunda version mayor de C++ (la anterior es C++98 y la próxima es C++17) y la actualización más importante desde C++98. Se introdujeron un gran número de cambios tanto para estandarizar las prácticas existentes como para mejorar las abstracciones disponibles para los programadores de C++.
Antes que fuera finalmente aprobado por ISO el 12 de agosto de 2011, se usaba el nombre 'C++0x' porque se esperaba que fuera publicado antes de 2010. Tomó ocho años entre C++03 y C++11, así que, hasta ahora, se ha convertido en el intervalo más largo entre dos versiones. Desde entonces C++ se actualiza regularmente cada tres años.
| Esta sección está incompleta Razón: Descripción más detallada |
Las siguientes características se fusionaron en C++11:
- De TR1: toda la TR1 excepto Funciones Especiales;
- De Boost: La biblioteca de hilos, exception_ptr, error_code yerror_condition, mejoras a iteradores (std::begin, std::end, std::next, std::prev);
- De C: Funciones de conversión de Unicode estilo C.
Sumario
Características centrales del lenguaje
- auto y decltype
- Funciones por defecto y eliminadas.
- final y override
- Valor de retorno al final
- Referencias rvalue
- Constructor de movimiento/operador de asignación de movimiento
- Enumeraciones con ámbito
- constexpr y tipos de literal
- Inicialización de lista
- Constructores delegados y heredados
- Inicialización con llaves o signo igual
- nullptr
- long long
- char16_t ychar32_t
- Alias de tipos
- Plantillas variádicas
- Uniones generalizadas
- PODs generalizados
- Literales de cadena Unicode
- Literales definidos por el usuario
- Atributos
- Expresiones lambda
- noexcept
- alignof y alignas
- Modelo de memoria multihilos
- Almacenamiento local al hilo (thread-local)
- Interfaz para recolección de basura (GC)
- Bucle for basado en rango (basado en una biblioteca de Boost)
- Aserciones estáticas (basado en una biblioteca de Boost)
| Esta sección está incompleta |
Características de la biblioteca
Archivos de encabezado
- <typeindex>
- <type_traits>
- <chrono>
- <initializer_list>
- <tuple>
- <scoped_allocator>
- <cstdint>
- <cinttypes>
- <system_error>
- <cuchar>
- <array>
- <forward_list>
- <unordered_set>
- <unordered_map>
- <random>
- <ratio>
- <cfenv>
- <regex>
- <atomic>
- <thread>
- <mutex>
- <future>
- <condition_variable>
Características de la biblioteca
- biblioteca de operaciones atómicas.
- emplace() y otros usos de referencias rvalue a través de todas las partes de la biblioteca existente.
- std::initializer_list
- Asignadores de memoria con estado y con stateful and ámbito.
- Contenedor forward_list
- Biblioteca chrono
- Biblioteca ratio
- Nuevos algoritmos
- Facetas de conversión de Unicode
- Biblioteca de hilos
- exception_ptr
- error_code y error_condition
- Mejoras a iteradores:
- std::begin
- std::end
- std::next
- std::prev
| Esta sección está incompleta |
Informes de defectos
Soporte de compiladores
Artículo principal: Soporte de compiladores para C++
Características principales de C++11
| Característica de C++11 |
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 |
HP aCC |
Digital Mars C++ |
||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Preprocesador de C99 | [https://wg21.link/N1653 [HTTPS://WG21.LINK/N1653 [1] N1653]] |
4.3 | Sí | 19.0 (2015)* (parcial)* 19.26* |
Sí | 4.1 | 11.1 | 2015 | 7.0 | 8.4 | Sí | 5.9 | A.06.25 | Sí | |||
Aserción estática (static_assert)
|
[https://wg21.link/N1720 [HTTPS://WG21.LINK/N1720 [2] N1720]] |
4.3 | 2.9 | 16.0* | Sí | 4.1 | 11.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.25 | 8.52 | |||
| Corchetes angulares | [https://wg21.link/N1757 [HTTPS://WG21.LINK/N1757 [3] N1757]] |
4.3 | Sí | 14.0* | Sí | 4.1 | 11.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | |||||
Declaraciones friend extendidas
|
[https://wg21.link/N1791 [HTTPS://WG21.LINK/N1791 [4] N1791]] |
4.7 | 2.9 | 16.0* (parcial) 18.0* |
Sí | 4.1 | 11.1* 12.0 |
2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.25 | ||||
long long
|
[https://wg21.link/N1811 [HTTPS://WG21.LINK/N1811 [5] N1811]] |
Sí | Sí | 14.0* | Sí | Sí | Sí | 2015 | 7.0 | 8.4 | Sí | Sí | Sí | Sí | |||
| Soporte del compilador para rasgos de tipo | [https://wg21.link/N1836 [HTTPS://WG21.LINK/N1836 [6] N1836]] |
4.3 | 3.0 | 14.0* | Sí | 4.0 | 10.0 | 2015 | 8.4 | Sí | 5.13 | 6.16 | |||||
| auto | [https://wg21.link/N1984 [HTTPS://WG21.LINK/N1984 [7] N1984]] |
4.4 | Sí | 16.0* | Sí | 3.9 | 11.0 (v0.9) 12.0 |
2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.25 | ||||
| Constructores delegados | [https://wg21.link/N1986 [HTTPS://WG21.LINK/N1986 [8] N1986]] |
4.7 | 3.0 | 18.0* | Sí | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.28 | ||||
extern template
|
[https://wg21.link/N1987 [HTTPS://WG21.LINK/N1987 [9] N1987]] |
3.3 | Sí | 12.0* | Sí | 3.9 | 9.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.25 | ||||
| constexpr | [https://wg21.link/N2235 [HTTPS://WG21.LINK/N2235 [10] N2235]] |
4.6 | 3.1 | 19.0 (2015)* | Sí | 4.6 | 13.0* 14.0 |
2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.28 | ||||
| Alias de plantillas | [https://wg21.link/N2258 [HTTPS://WG21.LINK/N2258 [11] N2258]] |
4.7 | 3.0 | 18.0* | Sí | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.27 | ||||
char16_t y char32_t
|
[https://wg21.link/N2249 [HTTPS://WG21.LINK/N2249 [12] N2249]] |
4.4 | 2.9 | 19.0 (2015)* | Sí | 4.4 | 12.1* 14.0 |
2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.27 | 8.52 | |||
| alignas | [https://wg21.link/N2341 [HTTPS://WG21.LINK/N2341 [13] N2341]] |
4.8 | 3.0 | 19.0 (2015)* | Sí | 4.8 | 15.0 | 2015 | 7.0 | 8.6 | Sí | 5.13 | |||||
| alignof | [https://wg21.link/N2341 [HTTPS://WG21.LINK/N2341 [14] N2341]] |
4.5 | 2.9 | 19.0 (2015)* | Sí | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | |||||
| Funciones por defecto y eliminadas | [https://wg21.link/N2346 [HTTPS://WG21.LINK/N2346 [15] N2346]] |
4.4 | 3.0 | 18.0* | Sí | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.25 | ||||
| Enumeraciones con ámbito | [https://wg21.link/N2347 [HTTPS://WG21.LINK/N2347 [16] N2347]] |
4.4 | 2.9 | 17.0* | Sí | 4.0 | 13.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.25 | ||||
| Operaciones atómicas | [https://wg21.link/N2427 [HTTPS://WG21.LINK/N2427 [17] N2427]] |
4.4 | 3.1 | 17.0* | Sí | Sí | 13.0 | 2015 | 8.4 | Sí | 5.14 | ||||||
nullptr
|
[https://wg21.link/N2431 [HTTPS://WG21.LINK/N2431 [18] N2431]] |
4.6 | 2.9 | 16.0* | Sí | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.27 | 8.52 | |||
| Operadores de conversión explícitos | [https://wg21.link/N2437 [HTTPS://WG21.LINK/N2437 [19] N2437]] |
4.5 | 3.0 | 18.0* | Sí | 4.4 | 13.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.27 | ||||
| calificadores-ref | [https://wg21.link/N2439 [HTTPS://WG21.LINK/N2439 [20] N2439]] |
4.8.1 | 2.9 | 19.0 (2015)* | Sí | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.28 | ||||
| Literales de cadena Unicode | [https://wg21.link/N2442 [HTTPS://WG21.LINK/N2442 [21] N2442]] |
4.4 | 3.0 | 19.0 (2015)* | Sí | 4.7 | 11.0* | 2015 | 7.0 | 8.4 | Sí | 5.7 | A.06.28 | 8.52 | |||
| Literales de cadena sin formato | [https://wg21.link/N2442 [HTTPS://WG21.LINK/N2442 [22] N2442]] |
4.5 | Sí | 18.0* | Sí | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.28 | 8.52 | |||
| Espacios de nombre en línea (inline) | [https://wg21.link/N2535 [HTTPS://WG21.LINK/N2535 [23] N2535]] |
4.4 | 2.9 | 19.0 (2015)* | Sí | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.28 | ||||
| Constructores heredados | [https://wg21.link/N2540 [HTTPS://WG21.LINK/N2540 [24] N2540]] |
4.8 | 3.3 | 19.0 (2015)* | Sí | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | |||||
| Valores de retorno de función al final | [https://wg21.link/N2541 [HTTPS://WG21.LINK/N2541 [25] N2541]] |
4.4 | 2.9 | 16.0* | Sí | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.27 | ||||
| Uniones irrestringidas | [https://wg21.link/N2544 [HTTPS://WG21.LINK/N2544 [26] N2544]] |
4.6 | 3.0 | 19.0 (2015)* | Sí | 4.6 | 14.0* | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.28 | ||||
| Plantillas variádicas | [https://wg21.link/N2242 [HTTPS://WG21.LINK/N2242 [27] N2242 [28] [29] N2555]] |
4.3 (N2242) 4.4 |
2.9 | 18.0* | Sí | 4.3 (N2242) 4.3 |
12.1 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.27 | ||||
| Expresión SFINAE | [https://wg21.link/N2634 [HTTPS://WG21.LINK/N2634 [30] N2634]] |
4.4 | 2.9 | 19.14* | Sí | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | Sí | ||||||
| Tipos locales y sin nombre como parámetros de plantillas | [https://wg21.link/N2657 [HTTPS://WG21.LINK/N2657 [31] N2657]] |
4.5 | 2.9 | 16.0* | Sí | 4.2 | 12.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.27 | ||||
| Almacenamiento local al hilo (thread_local) | [https://wg21.link/N2659 [HTTPS://WG21.LINK/N2659 [32] N2659]] |
4.4 (parcial) 4.8 |
3.3* | 16.0* (parcial) 19.0 (2015)* |
Sí | 4.8 | 11.1 (parcial) 15.0* |
2015 | 8.4 | Sí | 5.9 (parcial) | 8.52 (parcial) | |||||
| Inicialización y destrucción dinámica con concurrencia (estáticas mágicas) | [https://wg21.link/N2660 [HTTPS://WG21.LINK/N2660 [33] N2660]] |
4.3 | 2.9 | 19.0 (2015)* | Sí | Sí | 11.1* | 2015 | 8.4 | Sí | 5.13 | A.06.25 | |||||
| Recolección de basura y detección de fugas basada en alcance. | [https://wg21.link/N2670 [HTTPS://WG21.LINK/N2670 [34] N2670]] |
||||||||||||||||
| Inicialización de lista | [https://wg21.link/N2672 [HTTPS://WG21.LINK/N2672 [35] N2672]] |
4.4 | 3.1 | 18.0* | Sí | 4.5 | 13.0 (parcial) 14.0 |
2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.28 | ||||
| Inicialización de datos miembro no estáticos | [https://wg21.link/N2756 [HTTPS://WG21.LINK/N2756 [36] N2756]] |
4.7 | 3.0 | 18.0* | Sí | 4.6 | 14.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.28 | ||||
| Atributos | [https://wg21.link/N2761 [HTTPS://WG21.LINK/N2761 [37] N2761]] |
4.8 | 3.3 | 19.0 (2015)* | Sí | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.27 | ||||
Declaraciones enum adelantadas
|
[https://wg21.link/N2764 [HTTPS://WG21.LINK/N2764 [38] N2764]] |
4.6 | 3.1 | 17.0* | Sí | 4.5 | 11.1 (parcial) 14.0 |
2015 | 7.0 | 8.4 | Sí | 5.13 | |||||
| Literales definidos por el usuario | [https://wg21.link/N2765 [HTTPS://WG21.LINK/N2765 [39] N2765]] |
4.7 | 3.1 | 19.0 (2015)* | Sí | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | Sí | 5.14 | |||||
| Referencias rvalue | [https://wg21.link/N2118 [HTTPS://WG21.LINK/N2118 [40] N2118 [41] [42] N2844 [43] [44] CWG1138]] |
4.3 (N2118) 4.5 |
2.9 | 16.0* (N2844) 17.0* |
Sí | 4.5 | 11.1 (N2118) 12.0 (N2844) 14.0 |
2015 | 7.0* | 8.4 | Sí | 5.13 | A.06.25 | ||||
| Expresiones lambda | [https://wg21.link/N2550 [HTTPS://WG21.LINK/N2550 [45] N2550 [46] [47] N2658 [48] [49] N2927]] |
4.5 | 3.1 | 16.0* (N2658) 17.0* |
Sí | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.25 | ||||
| Bucle for basado en rango | [https://wg21.link/N2930 [HTTPS://WG21.LINK/N2930 [50] N2930]] |
4.6 | 3.0 | 17.0* | Sí | 4.5 | 13.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.28 | ||||
noexcept
|
[https://wg21.link/N3050 [HTTPS://WG21.LINK/N3050 [51] N3050]] |
4.6 | 3.0 | 19.0 (2015)* | Sí | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.28 | ||||
| Funciones miembro de movimiento especiales por defecto | [https://wg21.link/N3053 [HTTPS://WG21.LINK/N3053 [52] N3053]] |
4.6 | 3.0 | 19.0 (2015)* | Sí | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.25 | ||||
override y final
|
[https://wg21.link/N2928 [HTTPS://WG21.LINK/N2928 [53] N2928 [54] [55] N3206 [56] [57] N3272]] |
4.7 | 2.9 | 14.0* (parcial) 17.0* |
Sí | 4.8 | 12.0 (N2928) 14.0 |
2015 | 7.0 | 8.4 | Sí | 5.13 | |||||
| decltype | [https://wg21.link/N2343 [HTTPS://WG21.LINK/N2343 [58] N2343 [59] [60] N3276]] |
4.3 (N2343) 4.8.1 |
2.9 | 16.0* | Sí | 4.2 (N2343) 4.8 |
11.0 (N2343) 12.0 |
2015 | 7.0 | 8.4 | Sí | 5.13 | A.06.25 | 8.52 (N2343) | |||
| Característica de C++11 |
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 |
HP aCC |
Digital Mars C++ |
Características de la biblioteca de C++11
| Característica de C++11 |
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 |
|
|---|---|---|---|---|---|---|---|---|---|
| Rasgos de tipo | N1836 | 4.3 | 3.0 | 14.0* | Sí | 5.13 | Sí | 8.4 | |
| Recolección de basura (GC) y detección de fugas basada en alcance (soporte de biblioteca) | N2670 | 6 (no-op) |
3.4 (no-op) |
19.0 (2015)* (no-op) |
Sí (no-op) |
||||
| Dinero, tiempo y manipuladores de E/S hexfloat | N2071 N2072 |
5 | 3.8 | 19.0 (2015)* | Sí | 5.15 | |||
| Característica de C++11 |
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 |
* - planea sobre el número de versión para ver las notas