Leanpub Header

Skip to main content

C++17 - La guía completa

Todas las nuevas características del lenguaje y la biblioteca de C++17.

Traducido por: Lorenzo Javier Estrada

La versión en inglés se encuentra disponible aquí.

Minimum price

$14.90

$34.90

You pay

$34.90

Author earns

$27.92
$

...Or Buy With Credits!

You can get credits monthly with a Reader Membership
PDF
EPUB
WEB
0
Pages
99,631Words
About

About

About the Book

C++17 es la próxima evolución en la programación de C++ moderno, ahora soportado por los compiladores importantes de C++. Aunque la adopción de C++17 no es un paso tan grande como la adopción de C++11, C++17 contiene un gran número de pequeñas y valiosas características del lenguaje y la biblioteca, las cuales soportan y cambian la manera en la que programamos en C++. Como es usual, nada se explica por sí mismo, el combinar nuevas características te da aún más poder, y existen trampas ocultas.

Este libro cubre la motivación para, y el contexto de todas las nuevas características de C++17 (cubre tanto el lenguaje como la biblioteca) con muchos ejemplos e información única de trasfondo para los programadores de aplicaciones y los desarrolladores de bibliotecas. El enfoque es en cómo estas características impactan la programación día a día, qué efecto puede tener combinar estas características y cómo puedes beneficiarte de ellas en la práctica.

“¡Está escrito muy claramente y los ejemplos son muy útiles!” Graham Markall

“Estoy disfrutando el libro minuciosamente; había echado un vistazo a la lista de cambios en C++17 muchas veces antes, pero hasta que empecé a leer este libro, no tenía idea de qué tan sustanciales eran los cambios. ¡Me pone a pensar lo que pasé por alto con actualizaciones anteriores!” Jason Birch

“Pensé que sabía algo de C++. Descargué este libro y aprendí algo nuevo en el prefacio. ¡Hasta ahora altamente recomendado!” Tristan Brindle

Nicolai M. Josuttis es muy famoso en la comunidad de C++ como un conferencista y por escribir con autoridad, siendo el autor de los éxitos de ventas mundiales “The C++ Standard Library - A Tutorial and Reference” y (como coautor) de “C++ Templates - The Complete Guide”. Ha sido un miembro activo del comité de estandarización de C++ por más de 20 años.

Share this book

Categories

Author

About the Author

Nicolai M. Josuttis

Nicolai Josuttis (http://www.josuttis.com) is well known in the programming community because he not only speaks and writes with authority, being the (co-)author of the world-wide best sellers

but is also an innovative presenter, having talked at various conferences and events.

He is an independent trainer and speaker being active in C++ standardization for more than 20 years.

Leanpub Podcast

Episode 89

An Interview with Nicolai M. Josuttis

Contents

Table of Contents

Prefacio

  1. Agradecimientos

Acerca de este libro

  1. Lo que debes saber antes de leer este libro
  2. Estructura general del libro
  3. Cómo leer este libro
  4. Terminología de errores
  5. El estándar C++17
  6. Ejemplos de código e información adicional
  7. Retroalimentación
  8. ICaracterísticas básicas del lenguaje

1.Vínculos estructurados

  1. 1.1Vínculos estructurados en detalle
  2. 1.2Dónde pueden usarse los vínculos estructurados
  3. 1.3Suministrar una API similar a una tupla para vínculos estructurados
  4. 1.4Notas posteriores

2.if y switch con un inicializador

  1. 2.1if con un inicializador
  2. 2.2switch con un inicializador
  3. 2.3Notas posteriores

3.Variables en línea

  1. 3.1Motivación de las variables en línea
  2. 3.2Usar variables en línea
  3. 3.3constexpr ahora implica inline para miembros estáticos
  4. 3.4Variables en línea y thread_local
  5. 3.5Notas posteriores

4.Extensiones a agregados

  1. 4.1Motivación de la inicialización de agregados extendida
  2. 4.2Usar la inicialización de agregados extendida
  3. 4.3Definición de agregados
  4. 4.4Incompatibilidades con definiciones anteriores
  5. 4.5Notas posteriores

5.Elisión de copia obligatoria o paso de objetos inmaterializados

  1. 5.1Motivación de la elisión de copia obligatoria para temporales
  2. 5.2Beneficio de la elisión de copia obligatoria para temporales
  3. 5.3Categorías de valor clarificadas
  4. 5.4Pasar valor de retorno inmaterializado
  5. 5.5Notas posteriores

6.Extensiones a lambdas

  1. 6.1Lambdas constexpr
  2. 6.2Pasar copias de this a lambdas
  3. 6.3Capturar por referencia const
  4. 6.4Notas posteriores

7.Nuevos atributos y características de atributos

  1. 7.1Atributo [[nodiscard]]
  2. 7.2Atributo [[maybe_unused]]
  3. 7.3Atributo [[fallthrough]]
  4. 7.4Extensiones generales a atributos
  5. 7.5Notas posteriores

8.Otras características del lenguaje

  1. 8.1Espacios de nombres anidados
  2. 8.2Orden de evaluación de expresión definido
  3. 8.3Inicialización de enumeraciones desde valores integrales relajada
  4. 8.4Inicialización de lista directa con auto corregida
  5. 8.5Literales hexadecimales de punto flotante
  6. 8.6Literales de carácter UTF-8
  7. 8.7Especificaciones de excepción como parte del tipo
  8. 8.8static_assert con un solo argumento
  9. 8.9Condición del preprocesador __has_include
  10. 8.10Notas posteriores
  11. IICaracterísticas de plantillas

9.Deducción de argumentos de plantillas de clase

  1. 9.1Uso de la deducción de argumentos de plantillas de clase
  2. 9.2Guías de deducción
  3. 9.3Notas posteriores

10.if en tiempo de compilación

  1. 10.1Motivación de if en tiempo de compilación
  2. 10.2Usar if en tiempo de compilación
  3. 10.3if en tiempo de compilación con un inicializador
  4. 10.4Usar if en tiempo de compilación aparte de plantillas
  5. 10.5Notas posteriores

11.Expresiones de pliegue

  1. 11.1Motivación de las expresiones de pliegue
  2. 11.2Usar expresiones de pliegue
  3. 11.3Notas posteriores

12.Tratar con literales de cadena como parámetros de plantilla

  1. 12.1Usar cadenas en plantillas
  2. 12.2Notas posteriores

13.Tipos de marcador de posición similares a auto usados como parámetros de plantilla

  1. 13.1Usar auto en parámetros de plantilla
  2. 13.2Usar auto como un parámetro de plantilla de variable
  3. 13.3Usar decltype(auto) como parámetro de plantilla
  4. 13.4Notas posteriores

14.Declaraciones using extendidas

  1. 14.1Usar declaraciones using variádicas
  2. 14.2Declaraciones using variádicas para constructores heredables
  3. 14.3Notas posteriores
  4. IIINuevos componentes de la biblioteca

15.std::optional<>

  1. 15.1Usar std::optional<>
  2. 15.2Tipos y operaciones de std::optional<>
  3. 15.3Casos especiales
  4. 15.4Notas posteriores

16.std::variant<>

  1. 16.1Motivaci贸n de std::variant<>
  2. 16.2Usar std::variant<>
  3. 16.3Tipos y operaciones de std::variant<>
  4. 16.4Poliformismo y colecciones heterog茅neas con std::variant
  5. 16.5Casos especiales con std::variant<>
  6. 16.6Notas posteriores

17.std::any

  1. 17.1Usar std::any
  2. 17.2Tipos y operaciones de std::any
  3. 17.3Notas posteriores

18.std::byte

  1. 18.1Usar std::byte
  2. 18.2Tipos y operaciones de std::byte
  3. 18.3Notas posteriores

19.Vistas sobre cadenas (std::string_views)

  1. 19.1Diferencias al comparar con std::string
  2. 19.2Usar vistas sobre cadenas
  3. 19.3Usar vistas sobre cadenas como par谩metros
  4. 19.4Tipos y operaciones de vistas sobre cadenas
  5. 19.5Usar vistas sobre cadenas en una API
  6. 19.6Notas posteriores

20.La biblioteca del sistema de archivos

  1. 20.1Ejemplos b谩sicos
  2. 20.2Principios y terminolog铆a
  3. 20.3Operaciones de las rutas de acceso
  4. 20.4Operaciones del sistema de archivos
  5. 20.5Iterar sobre directorios
  6. 20.6Notas posteriores
  7. IVExtensiones y modificaciones a la biblioteca

21.Extensiones a los rasgos de tipo

  1. 21.1Sufijo _v de los rasgos de tipo
  2. 21.2Nuevos rasgos de tipo
  3. 21.3Notas posteriores

22.Algoritmos paralelos de la STL

  1. 22.1Usar algoritmos paralelos
  2. 22.2Políticas de ejecución
  3. 22.3Control de excepciones
  4. 22.4Beneficio de no usar algoritmos paralelos
  5. 22.5Resumen de los algoritmos paralelos
  6. 22.6Motivación de los nuevos algoritmos para procesamiento paralelo
  7. 22.7Notas posteriores

23.Nuevos algoritmos de la STL en detalle

  1. 23.1std::for_each_n()
  2. 23.2Nuevos algoritmos numéricos de la STL
  3. 23.3Notas posteriores

24.Subcadenas y buscadores de subsecuencias

  1. 24.1Usar buscadores de subcadenas
  2. 24.2Usar buscadores de subsecuencias generales
  3. 24.3Usar predicados de buscadores
  4. 24.4Notas posteriores

25.Otros algoritmos y funciones de utilidad

  1. 25.1size(), empty(), y data()
  2. 25.2as_const()
  3. 25.3clamp()
  4. 25.4sample()
  5. 25.5Notas posteriores

26.Extensiones a contenedores y cadenas

  1. 26.1Controles de nodos
  2. 26.2Mejoras a emplazamiento
  3. 26.3Soporte de contenedores para tipos incompletos
  4. 26.4Mejoras a cadenas
  5. 26.5Notas posteriores

27.Multihilos y concurrencia

  1. 27.1Cerrojos y mutexes suplementarios
  2. 27.2is_always_lock_free para tipos atómicos
  3. 27.3Tamaños de las líneas de caché
  4. 27.4Notas posteriores

28.Otras características y pequeñas modificaciones a la biblioteca

  1. 28.1std::uncaught_exceptions()
  2. 28.2Mejoras a punteros compartidos
  3. 28.3Extensiones numéricas
  4. 28.4Extensiones a chrono
  5. 28.5Extensiones y correcciones a constexpr
  6. 28.6Extensiones y correcciones a noexcept
  7. 28.7Notas posteriores
  8. VUtilidades para expertos

29.Recursos de memoria polifórmicos (PMR)

  1. 29.1Usar recursos de memoria estándares
  2. 29.2Definir recursos de memoria personalizados
  3. 29.3Proveer soporte de recursos de memoria para tipos personalizados
  4. 29.4Notas posteriores

30.new y delete con datos sobrealineados

  1. 30.1Usar new con alineaciones
  2. 30.2Implementar el operador new() para memoria alineada
  3. 30.3Implementar un operador new() global
  4. 30.4Rastrear todas las llamadas a ::new
  5. 30.5Notas posteriores

31.std::to_chars() y std::from_chars()

  1. 31.1Motivación de conversiones de bajo nivel entre secuencias de caracteres y valores numéricos
  2. 31.2Ejemplo de uso
  3. 31.3Soporte de ida y vuelta para punto flotante
  4. 31.4Notas posteriores

32.std::launder()

  1. 32.1Motivación de std::launder()
  2. 32.2Cómo launder() resuelve el problema
  3. 32.3Por qué/cuándo launder() no funciona
  4. 32.4Notas posteriores

33.Mejoras para implementar c贸digo gen茅rico

  1. 33.1std::invoke<>()
  2. 33.2std::bool_constant<>
  3. 33.3std::void_t<>
  4. 33.4Notas posteriores
  5. VIConsejos generales finales

34.Ajustes comunes de C++17

  1. 34.1Valor de __cplusplus
  2. 34.2Compatibilidad con C11
  3. 34.3Tratar con controladores de señales
  4. 34.4Garantías del avance progresivo
  5. 34.5Notas posteriores

35.Caracter铆sticas en desuso y eliminadas

  1. 35.1Caracter铆sticas base del lenguaje en desuso y eliminadas
  2. 35.2Caracter铆sticas de la biblioteca en desuso y eliminadas
  3. 35.3Notas posteriores

Glossary

  1. A
  2. E
  3. I
  4. O
  5. P
  6. S
  7. T

Index

The Leanpub 60 Day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.

You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!

So, there's no reason not to click the Add to Cart button, is there?

See full terms...

Earn $8 on a $10 Purchase, and $16 on a $20 Purchase

We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earned over $14 million writing, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub