Espacios de nombres
Variantes
Acciones

C++17

De cppreference.com
< cpp

Las siguientes características fueron fusionadas en C++17:

  1. De las especificaciones técnicas: la biblioteca de sistema de archivos, la biblioteca de fundamentos v1 (incluyendo optional, any, string_view, asignadores polifórmicos, buscadores, apply), paralelismo v1 (incluyendo políticas de ejecución, reduce, inclusive_scan, exclusive_scan), pero se eliminó exception_list. De la especificación técnica de funciones especiales: funciones matemáticas especiales, de la biblioteca de fundamentos v2: std::gcd, std::lcm
  2. De C11: std::aligned_alloc, std::timespec_get

Contenido

[editar] Eliminados y obsoletos/en desuso

Eliminados

auto_ptr, objetos función obsoletos, std::random_shuffle, std::unexpected, los alias de iostreams obsoletos, trígrafos, la palabra clave register, incremento del tipo bool

Obsoletos/en desuso

std::iterator, std::raw_storage_iterator, std::get_temporary_buffer, std::is_literal_type, std::result_of, todo el archivo de encabezado <codecvt>

[editar] Nuevas características del lenguaje

[editar] Nuevos archivos de encabezado

[editar] Nuevas características de la biblioteca

[editar] En utility

[editar] En memory



[editar] En types

[editar] En algorithm

[editar] Relacionados con contenedores

[editar] En numeric

[editar] Otras

[editar] Reporte de defectos

Reporte de defectos corregidos en (289 centrales, 281 biblioteca)

[editar] Soporte de compiladores

Artículo principal: Soporte de compiladores de C++

[editar] Características centrales del lenguage C++17

Característica de c++17
 
Ponencia(s)
 
Versión
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc
Nuevas reglas de auto para inicialización de lista directa N3922 c++17-lang 5 3.8 19.0* 4.10.1 17.0 10.3 17.7
static_assert sin mensaje N3928 c++17-lang 6 2.5 19.10* 4.12 18.0 10.3 17.7
typename en un parámetro de plantilla de plantilla N4051 c++17-lang 5 3.5 19.0* 4.10.1 17.0 10.3 17.7
Eliminar trígrafos N4086 c++17-lang 5 3.5 16.0* 5.0 10.3 19.1
Definición de espacios de nombre anidados N4230 c++17-lang 6 3.6 19.0* 4.12 17.0 10.3 17.7
Atributos para espacios de nombre y enumeradores N4266 c++17-lang 4.9 (partial)*
6
3.6 19.0* 4.11 17.0 10.3 17.7
Literales de carácter u8 N4267 c++17-lang 6 3.6 19.0* 4.11 17.0 10.3 17.7
Permitir evaluación constante para todos los argumentos de plantilla de no tipo N4268 c++17-lang 6 3.6 19.12* 5.0 19.0.1 10.3 19.1
Expresiones de pliegue N4295 c++17-lang 6 3.6 19.12* 4.14 19.0 10.3 18.1
Expresiones de pliegue unarias y paquetes de parámetros vaciós P0036R0 c++17-lang 6 3.9 19.12* 4.14 10.3 19.1
Eliminar uso obsoleto de la palabra clave register P0001R1 c++17-lang 7 3.8 19.11* 4.13 18.0 10.3 17.7
Remover operator++(bool) obsoleto P0002R1 c++17-lang 7 3.8 19.11* 4.13 18.0 10.3 17.7
Hacer las especificaciones de excepciones parte del sistema de tipos P0012R1 c++17-lang 7 4 19.12* 4.14 19.0 10.3 19.1
Inicialización de agregados con clases base P0017R1 c++17-lang 7 3.9 19.14* 5.0 19.0.1 10.3 19.1
__has_include en condicionales del preprocesador P0061R1 c++17-lang 5 19.11* 4.13 18.0 10.3 17.7
RD: Nueva especificación para constructores heredados (DR1941 et al) P0136R1 c++17-lang 7 3.9 19.14* 6.1 10.3 19.1
Captura de lambda de *this P0018R3 c++17-lang 7 3.9 19.11* 4.14 19.0 10.3 18.1
Inicialización de lista directa de enumeraciones P0138R2 c++17-lang 7 3.9 19.11* 4.14 18.0 10.3 19.1
Expresiones lambda constexpr P0170R1 c++17-lang 7 5 19.11* 4.14 19.0 10.3 18.1
Tipos que difieren en begin y end en bucle for basado en rango P0184R0 c++17-lang 6 3.9 19.10* 4.12 18.0 10.3 17.7
Atributo [[fallthrough]] P0188R1 c++17-lang 7 3.9 19.10* 4.13 18.0 10.3 17.7
Atributo [[nodiscard]] P0189R1 c++17-lang 7 3.9 19.11* 4.13 18.0 10.3 17.7
Atributo [[maybe_unused]] P0212R1 c++17-lang 7 3.9 19.11* 4.13 18.0 10.3 17.7
Literales de punto flotante hexadecimales P0245R1 c++17-lang 3.0 19.11* 4.13 18.0 10.3 17.7
Usar atributos de espacios de nombres sin repetición P0028R4 c++17-lang 7 3.9 19.11* 4.13 18.0 10.3 17.7
Asignación de memoria dinámica para datos sobrealineados P0035R4 c++17-lang 7 4 19.12* 4.14 19.0 10.3 19.1
Deducción de argumentos de plantillas de clase P0091R3 c++17-lang 7 5 19.14* 5.0 19.0.1 10.3 19.1
Parámetros de plantilla de no tipo con el tipo auto P0127R2 c++17-lang 7 4 19.14* 5.0 19.0.1 10.3 19.1
Elisión de copia obligatoria P0135R1 c++17-lang 7 4 19.13* 5.0 19.0.1 10.3 19.1
Reemplazo de objetos de clase que contienen miembros de referencia P0137R1 c++17-lang 7 6 19.14* 5.0 10.3 19.1
Orden de evaluación de expresiones más estricto P0145R3 c++17-lang 7 4 19.14* 5.0 19.0.1 10.3 19.1
Vínculos estructurados P0217R3 c++17-lang 7 4 19.11* 4.14 19.0 10.3 18.1
Ignorar atributos desconocidos P0283R2 c++17-lang 3.9 19.11* 4.13 18.0 10.3 17.7
Instrucciones constexpr if P0292R2 c++17-lang 7 3.9 19.11* 4.14 19.0 10.3 18.1
if y switch con un inicializador P0305R1 c++17-lang 7 3.9 19.11* 4.14 18.0 10.3 18.1
Variables en línea P0386R2 c++17-lang 7 3.9 19.12* 4.14 19.0 10.3 18.1
Eliminar especificaciones de excepciones obsoletas de C++17 P0003R5 c++17-lang 7 4 19.10* 4.14 19.0 10.3 19.1
Expansión de paquetes en declaraciones using P0195R2 c++17-lang 7 4 19.14* 5.0 19.0 10.3 19.1
RD: Coincidencia de argumentos de plantilla de plantilla excluye plantillas compatibles P0522R0 c++17-lang 7 4 19.12* 5.0 19.0.1 10.3 19.1


Característica de c++17
 
Ponencia(s)
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc

[editar] Características de la biblioteca de C++17

Característica de c++17
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Intel Parallel STL
Sun/Oracle C++
Biblioteca Estándar
Embarcadero C++ Builder
Biblioteca Estándar
Cray C++
Biblioteca Estándar
std::void_t N3911 6 3.6 19.0* N/A 10.3
std::uncaught_exceptions() N4259 6 3.7 19.0* N/A
std::size(), std::empty() y std::data() N4280 6 3.6 19.0* N/A 10.3
Mejorar std::pair y std::tuple N4387 6 4 19.0* N/A 10.3
std::bool_constant N4389 6 3.7 19.0* N/A 10.3
std::shared_mutex (sin tiempo) N4508 6 3.7 19.0* N/A 10.3
Rasgos de tipo de plantillas de variable P0006R0 7 3.8 19.0* N/A 10.3
Rasgos de tipo para operadores lógicos P0013R1 6 3.8 19.0* N/A 10.3
Estandarización de la especificación técnica de paralelismo P0024R2 9* 19.14* 18.0*
std::clamp() P0025R0 7 3.9 19.0*

10.0.0*

N/A 10.3
Tamaño de interferencia de hardware P0154R1 19.11* N/A
Rasgos de tipo intercambiables (nothrow) P0185R1 7 3.9 19.0*

10.0.0*

N/A 10.3
Biblioteca de sistema de archivos P0218R1 8 7 19.14*

11.0.0*

N/A 10.3
std::string_view N3921
P0220R1
7 4 19.10*

10.0.0*

N/A 10.3
std::any P0220R1 7 4 19.10*

10.0.0*

N/A 10.3
std::optional P0220R1 7 4 19.10*

10.0.0*

N/A 10.3
Recursos de memoria polifórmicos P0220R1 9 19.13* N/A 10.3
Funciones matemáticas especiales P0226R1 7 19.14* N/A 10.3
C++17 debe referirse a C11 en lugar de C99 P0063R3 9 7 19.0*
(partial)*
N/A
Mapas y conjuntos (maps/sets) unidos P0083R3 7 8 19.12*

10.0.0*

N/A
std::variant P0088R3 7 4 19.10*

10.0.0*

N/A 10.3
std::make_from_tuple() P0209R2 7 3.9 19.10* N/A 10.3
std::has_unique_object_representations P0258R2 7 6 19.11* N/A 10.3
std::gcd() y std::lcm() P0295R0 7 4 19.11* N/A 10.3
std::not_fn P0005R4
P0358R1
7 3.9 19.12* N/A 10.3
Conversiones de cadena elementales P0067R5 8 (no FP) 7 (no FP) 19.14* (no FP)*
19.24*
N/A
std::shared_ptr y std::weak_ptr con soporte para arrays P0414R2 7 19.12* N/A 10.3
std::scoped_lock P0156R2 7 5 19.11* N/A 10.3
std::byte P0298R3 7 5 19.11* N/A 10.3
std::is_aggregate LWG2911 7 5 19.15* N/A 10.3
Característica de c++17
 
Ponencia(s)
 
GCC libstdc++
Clang libc++
MSVC
Biblioteca Estándar
Apple Clang
Intel Parallel STL
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