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.
Contenido |
[editar] 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 |
[editar] Características de la biblioteca
[editar] 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>
[editar] 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:
Esta sección está incompleta |
[editar] Informes de defectos
[editar] Soporte de compiladores
Artículo principal: Soporte de compiladores para C++
[editar] 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 | N1653 | 4.3 | Sí | 19.0 (2015)*(parcial)* 19.26* | Sí | 4.1 | 11.1 | 10.1 | 5.9 | Sí | 8.4 | 2015 | 7.0 | A.06.25 | Sí | |
Aserción estática (static_assert) | N1720 | 4.3 | 2.9 | 16.0* | Sí | 4.1 | 11.0 | 11.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.25 | 8.52 | |
Corchetes angulares | N1757 | 4.3 | Sí | 14.0* | Sí | 4.1 | 11.0 | 12.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | |||
Declaraciones friend extendidas | N1791 | 4.7 | 2.9 | 16.0* (parcial) 18.0* | Sí | 4.1 | 11.1* 12.0 | 11.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.25 | ||
longlong | N1811 | Sí | Sí | 14.0* | Sí | Sí | Sí | Sí | Sí | Sí | 8.4 | 2015 | 7.0 | Sí | Sí | |
Soporte del compilador para rasgos de tipo | N1836 | 4.3 | 3.0 | 14.0* | Sí | 4.0 | 10.0 | 13.1.3 | 5.13 | Sí | 8.4 | 2015 | 6.16 | |||
auto | N1984 | 4.4 | Sí | 16.0* | Sí | 3.9 | 11.0 (v0.9) 12.0 | 11.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.25 | ||
Constructores delegados | N1986 | 4.7 | 3.0 | 18.0* | Sí | 4.7 | 14.0 | 11.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | ||
externtemplate | N1987 | 3.3 | Sí | 12.0* | Sí | 3.9 | 9.0 | 11.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.25 | ||
constexpr | N2235 | 4.6 | 3.1 | 19.0 (2015)* | Sí | 4.6 | 13.0* 14.0 | 12.1* 13.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | ||
Alias de plantillas | N2258 | 4.7 | 3.0 | 18.0* | Sí | 4.2 | 12.1 | 13.1.1* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.27 | ||
char16_t y char32_t | N2249 | 4.4 | 2.9 | 19.0 (2015)* | Sí | 4.4 | 12.1* 14.0 | 13.1.1* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.27 | 8.52 | |
alignas | N2341 | 4.8 | 3.0 | 19.0 (2015)* | Sí | 4.8 | 15.0 | 13.1.2* | 5.13 | Sí | 8.6 | 2015 | 7.0 | |||
alignof | N2341 | 4.5 | 2.9 | 19.0 (2015)* | Sí | 4.8 | 15.0 | 13.1.2* | 5.13 | Sí | 8.4 | 2015 | 7.0 | |||
Funciones por defecto y eliminadas | N2346 | 4.4 | 3.0 | 18.0* | Sí | 4.1 | 12.0 | 13.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.25 | ||
Enumeraciones con ámbito | N2347 | 4.4 | 2.9 | 17.0* | Sí | 4.0 | 13.0 | 12.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.25 | ||
Operaciones atómicas | N2427 | 4.4 | 3.1 | 17.0* | Sí | Sí | 13.0 | 13.1.2* | 5.14 | Sí | 8.4 | 2015 | ||||
nullptr | N2431 | 4.6 | 2.9 | 16.0* | Sí | 4.2 | 12.1 | 13.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.27 | 8.52 | |
Operadores de conversión explícitos | N2437 | 4.5 | 3.0 | 18.0* | Sí | 4.4 | 13.0 | 12.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.27 | ||
calificadores-ref | N2439 | 4.8.1 | 2.9 | 19.0 (2015)* | Sí | 4.7 | 14.0 | 13.1.2* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | ||
Literales de cadena Unicode | N2442 | 4.4 | 3.0 | 19.0 (2015)* | Sí | 4.7 | 11.0* | 10.1* 13.1.1* | 5.7 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | 8.52 | |
Literales de cadena sin formato | N2442 | 4.5 | Sí | 18.0* | Sí | 4.7 | 14.0 | 13.1.1*, excepto AIX xlC 13.1.3 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | 8.52 | |
Espacios de nombre en línea (inline) | N2535 | 4.4 | 2.9 | 19.0 (2015)* | Sí | 4.5 | 14.0 | 11.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | ||
Constructores heredados | N2540 | 4.8 | 3.3 | 19.0 (2015)* | Sí | 4.8 | 15.0 | 13.1.1* | 5.13 | Sí | 8.4 | 2015 | 7.0 | |||
Valores de retorno de función al final | N2541 | 4.4 | 2.9 | 16.0* | Sí | 4.1 | 12.0 | 12.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.27 | ||
Uniones irrestringidas | N2544 | 4.6 | 3.0 | 19.0 (2015)* | Sí | 4.6 | 14.0* | 13.1.2* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | ||
Plantillas variádicas | N2242 N2555 | 4.3 (N2242) 4.4 | 2.9 | 18.0* | Sí | 4.3 (N2242) 4.3 | 12.1 | 11.1 (N2242) | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.27 | ||
Expresión SFINAE | N2634 | 4.4 | 2.9 | 19.14* | Sí | 4.2 | 12.1 | Sí | 8.4 | 2015 | 7.0 | |||||
Tipos locales y sin nombre como parámetros de plantillas | N2657 | 4.5 | 2.9 | 16.0* | Sí | 4.2 | 12.0 | 13.1.2* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.27 | ||
Almacenamiento local al hilo (thread_local) | N2659 | 4.4 (parcial) 4.8 | 3.3* | 16.0* (parcial) 19.0 (2015)* | Sí | 4.8 | 11.1 (parcial) 15.0* | 10.1 (parcial)* 13.1.2 (parcial)* | 5.9 (parcial) | Sí | 8.4 | 2015 | 8.52 (parcial) | |||
Inicialización y destrucción dinámica con concurrencia (estáticas mágicas) | N2660 | 4.3 | 2.9 | 19.0 (2015)* | Sí | Sí | 11.1* | 13.1.2* | 5.13 | Sí | 8.4 | 2015 | A.06.25 | |||
Recolección de basura y detección de fugas basada en alcance. | N2670 | |||||||||||||||
Inicialización de lista | N2672 | 4.4 | 3.1 | 18.0* | Sí | 4.5 | 13.0 (parcial) 14.0 | 13.1.2* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | ||
Inicialización de datos miembro no estáticos | N2756 | 4.7 | 3.0 | 18.0* | Sí | 4.6 | 14.0 | 13.1.2* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | ||
Atributos | N2761 | 4.8 | 3.3 | 19.0 (2015)* | Sí | 4.2 | 12.1 | 13.1.1* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.27 | ||
Declaraciones enum adelantadas | N2764 | 4.6 | 3.1 | 17.0* | Sí | 4.5 | 11.1 (parcial) 14.0 | 12.1 | 5.13 | Sí | 8.4 | 2015 | 7.0 | |||
Literales definidos por el usuario | N2765 | 4.7 | 3.1 | 19.0 (2015)* | Sí | 4.8 | 15.0 | 13.1.2* | 5.14 | Sí | 8.4 | 2015 | 7.0 | |||
Referencias rvalue | N2118 N2844 CWG1138 | 4.3 (N2118) 4.5 | 2.9 | 16.0* (N2844) 17.0* | Sí | 4.5 | 11.1 (N2118) 12.0 (N2844) 14.0 | 12.1 | 5.13 | Sí | 8.4 | 2015 | 7.0* | A.06.25 | ||
Expresiones lambda | N2550 N2658 N2927 | 4.5 | 3.1 | 16.0* (N2658) 17.0* | Sí | 4.1 | 12.0 | 13.1.2* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.25 | ||
Bucle for basado en rango | N2930 | 4.6 | 3.0 | 17.0* | Sí | 4.5 | 13.0 | 13.1.2* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | ||
noexcept | N3050 | 4.6 | 3.0 | 19.0 (2015)* | Sí | 4.5 | 14.0 | 13.1.1* | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.28 | ||
Funcionesmiembro de movimiento especiales por defecto | N3053 | 4.6 | 3.0 | 19.0 (2015)* | Sí | 4.5 | 14.0 | 5.13 | Sí | 8.4 | 2015 | 7.0 | A.06.25 | |||
override y final | N2928 N3206 N3272 | 4.7 | 2.9 | 14.0* (parcial) 17.0* | Sí | 4.8 | 12.0 (N2928) 14.0 | 13.1.1* | 5.13 | Sí | 8.4 | 2015 | 7.0 | |||
decltype | N2343 N3276 | 4.3 (N2343) 4.8.1 | 2.9 | 16.0* | Sí | 4.2 (N2343) 4.8 | 11.0 (N2343) 12.0 | 11.1 (N2343) | 5.13 | Sí | 8.4 | 2015 | 7.0 | 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++ |
[editar] 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