Prefacio
- Agradecimientos
Acerca de este libro
- Lo que debes saber antes de leer este libro
- Estructura general del libro
- Cómo leer este libro
- Terminología de errores
- El estándar C++17
- Ejemplos de código e información adicional
- Retroalimentación
- ICaracterísticas básicas del lenguaje
1.Vínculos estructurados
- 1.1Vínculos estructurados en detalle
- 1.2Dónde pueden usarse los vínculos estructurados
- 1.3Suministrar una API similar a una tupla para vínculos estructurados
- 1.4Notas posteriores
2.if y switch con un inicializador
- 2.1
ifcon un inicializador - 2.2
switchcon un inicializador - 2.3Notas posteriores
3.Variables en línea
- 3.1Motivación de las variables en línea
- 3.2Usar variables en línea
- 3.3
constexprahora implicainlinepara miembros estáticos - 3.4Variables en línea y
thread_local - 3.5Notas posteriores
4.Extensiones a agregados
- 4.1Motivación de la inicialización de agregados extendida
- 4.2Usar la inicialización de agregados extendida
- 4.3Definición de agregados
- 4.4Incompatibilidades con definiciones anteriores
- 4.5Notas posteriores
5.Elisión de copia obligatoria o paso de objetos inmaterializados
- 5.1Motivación de la elisión de copia obligatoria para temporales
- 5.2Beneficio de la elisión de copia obligatoria para temporales
- 5.3Categorías de valor clarificadas
- 5.4Pasar valor de retorno inmaterializado
- 5.5Notas posteriores
6.Extensiones a lambdas
- 6.1Lambdas
constexpr - 6.2Pasar copias de
thisa lambdas - 6.3Capturar por referencia
const - 6.4Notas posteriores
7.Nuevos atributos y características de atributos
- 7.1Atributo
[[nodiscard]] - 7.2Atributo
[[maybe_unused]] - 7.3Atributo
[[fallthrough]] - 7.4Extensiones generales a atributos
- 7.5Notas posteriores
8.Otras caracterÃsticas del lenguaje
- 8.1Espacios de nombres anidados
- 8.2Orden de evaluación de expresión definido
- 8.3Inicialización de enumeraciones desde valores integrales relajada
- 8.4Inicialización de lista directa con
autocorregida - 8.5Literales hexadecimales de punto flotante
- 8.6Literales de carácter UTF-8
- 8.7Especificaciones de excepción como parte del tipo
- 8.8
static_assertcon un solo argumento - 8.9Condición del preprocesador
__has_include - 8.10Notas posteriores
- IICaracterísticas de plantillas
9.Deducción de argumentos de plantillas de clase
- 9.1Uso de la deducción de argumentos de plantillas de clase
- 9.2Guías de deducción
- 9.3Notas posteriores
10.if en tiempo de compilación
- 10.1Motivación de
ifen tiempo de compilación - 10.2Usar
ifen tiempo de compilación - 10.3
ifen tiempo de compilación con un inicializador - 10.4Usar
ifen tiempo de compilación aparte de plantillas - 10.5Notas posteriores
11.Expresiones de pliegue
- 11.1Motivación de las expresiones de pliegue
- 11.2Usar expresiones de pliegue
- 11.3Notas posteriores
12.Tratar con literales de cadena como parámetros de plantilla
- 12.1Usar cadenas en plantillas
- 12.2Notas posteriores
13.Tipos de marcador de posición similares a auto usados como parámetros de plantilla
- 13.1Usar
autoen parámetros de plantilla - 13.2Usar
autocomo un parámetro de plantilla de variable - 13.3Usar
decltype(auto)como parámetro de plantilla - 13.4Notas posteriores
14.Declaraciones using extendidas
- 14.1Usar declaraciones
usingvariádicas - 14.2Declaraciones
usingvariádicas para constructores heredables - 14.3Notas posteriores
- IIINuevos componentes de la biblioteca
15.std::optional<>
- 15.1Usar
std::optional<> - 15.2Tipos y operaciones de
std::optional<> - 15.3Casos especiales
- 15.4Notas posteriores
16.std::variant<>
- 16.1Motivaci贸n de
std::variant<> - 16.2Usar
std::variant<> - 16.3Tipos y operaciones de
std::variant<> - 16.4Poliformismo y colecciones heterog茅neas con
std::variant - 16.5Casos especiales con
std::variant<> - 16.6Notas posteriores
17.std::any
- 17.1Usar
std::any - 17.2Tipos y operaciones de
std::any - 17.3Notas posteriores
18.std::byte
- 18.1Usar
std::byte - 18.2Tipos y operaciones de
std::byte - 18.3Notas posteriores
19.Vistas sobre cadenas (std::string_views)
- 19.1Diferencias al comparar con
std::string - 19.2Usar vistas sobre cadenas
- 19.3Usar vistas sobre cadenas como par谩metros
- 19.4Tipos y operaciones de vistas sobre cadenas
- 19.5Usar vistas sobre cadenas en una API
- 19.6Notas posteriores
20.La biblioteca del sistema de archivos
- 20.1Ejemplos b谩sicos
- 20.2Principios y terminolog铆a
- 20.3Operaciones de las rutas de acceso
- 20.4Operaciones del sistema de archivos
- 20.5Iterar sobre directorios
- 20.6Notas posteriores
- IVExtensiones y modificaciones a la biblioteca
21.Extensiones a los rasgos de tipo
- 21.1Sufijo
_vde los rasgos de tipo - 21.2Nuevos rasgos de tipo
- 21.3Notas posteriores
22.Algoritmos paralelos de la STL
- 22.1Usar algoritmos paralelos
- 22.2Políticas de ejecución
- 22.3Control de excepciones
- 22.4Beneficio de no usar algoritmos paralelos
- 22.5Resumen de los algoritmos paralelos
- 22.6Motivación de los nuevos algoritmos para procesamiento paralelo
- 22.7Notas posteriores
23.Nuevos algoritmos de la STL en detalle
- 23.1
std::for_each_n() - 23.2Nuevos algoritmos numéricos de la STL
- 23.3Notas posteriores
24.Subcadenas y buscadores de subsecuencias
- 24.1Usar buscadores de subcadenas
- 24.2Usar buscadores de subsecuencias generales
- 24.3Usar predicados de buscadores
- 24.4Notas posteriores
25.Otros algoritmos y funciones de utilidad
- 25.1
size(),empty(), ydata() - 25.2
as_const() - 25.3
clamp() - 25.4
sample() - 25.5Notas posteriores
26.Extensiones a contenedores y cadenas
- 26.1Controles de nodos
- 26.2Mejoras a emplazamiento
- 26.3Soporte de contenedores para tipos incompletos
- 26.4Mejoras a cadenas
- 26.5Notas posteriores
27.Multihilos y concurrencia
- 27.1Cerrojos y mutexes suplementarios
- 27.2
is_always_lock_freepara tipos atómicos - 27.3Tamaños de las líneas de caché
- 27.4Notas posteriores
28.Otras características y pequeñas modificaciones a la biblioteca
- 28.1
std::uncaught_exceptions() - 28.2Mejoras a punteros compartidos
- 28.3Extensiones numéricas
- 28.4Extensiones a
chrono - 28.5Extensiones y correcciones a
constexpr - 28.6Extensiones y correcciones a
noexcept - 28.7Notas posteriores
- VUtilidades para expertos
29.Recursos de memoria polifórmicos (PMR)
- 29.1Usar recursos de memoria estándares
- 29.2Definir recursos de memoria personalizados
- 29.3Proveer soporte de recursos de memoria para tipos personalizados
- 29.4Notas posteriores
30.new y delete con datos sobrealineados
- 30.1Usar
newcon alineaciones - 30.2Implementar el operador
new()para memoria alineada - 30.3Implementar un operador
new()global - 30.4Rastrear todas las llamadas a
::new - 30.5Notas posteriores
31.std::to_chars() y std::from_chars()
- 31.1Motivación de conversiones de bajo nivel entre secuencias de caracteres y valores numéricos
- 31.2Ejemplo de uso
- 31.3Soporte de ida y vuelta para punto flotante
- 31.4Notas posteriores
32.std::launder()
- 32.1Motivación de
std::launder() - 32.2Cómo
launder()resuelve el problema - 32.3Por qué/cuándo
launder()no funciona - 32.4Notas posteriores
33.Mejoras para implementar c贸digo gen茅rico
- 33.1
std::invoke<>() - 33.2
std::bool_constant<> - 33.3
std::void_t<> - 33.4Notas posteriores
- VIConsejos generales finales
34.Ajustes comunes de C++17
- 34.1Valor de
__cplusplus - 34.2Compatibilidad con C11
- 34.3Tratar con controladores de señales
- 34.4Garantías del avance progresivo
- 34.5Notas posteriores
35.Caracter铆sticas en desuso y eliminadas
- 35.1Caracter铆sticas base del lenguaje en desuso y eliminadas
- 35.2Caracter铆sticas de la biblioteca en desuso y eliminadas
- 35.3Notas posteriores
Glossary
- A
- E
- I
- O
- P
- S
- T
