C++17 - La guía completa
$14.90
Precio mínimo
$34.90
Precio sugerido

C++17 - La guía completa

Sobre el Libro

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.

Sobre el Autor

Nicolai M. Josuttis
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.

Índice

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

Garantía de satisfacción 100% de Leanpub por 60 días

Durante los 60 días posteriores a la compra, puedes obtener un reembolso del 100% en cualquier compra de Leanpub, en dos clics.

Técnicamente, esto es arriesgado para nosotros, ya que tendrás los archivos del libro o curso de cualquier manera. Pero estamos tan seguros de nuestros productos y servicios, y de nuestros autores y lectores, que nos complace ofrecer una garantía de devolución total del dinero para todo lo que vendemos.

Solo puedes descubrir qué tan bueno es algo probándolo, y debido a nuestra garantía de devolución del 100% del dinero, ¡literalmente no hay riesgo al hacerlo!

Entonces, no hay razón para no hacer clic en el botón Agregar al carrito, ¿verdad?

Ver términos completos...

Gane $8 por una compra de $10, y $16 por una compra de $20

Pagamos regalías del 80% en compras de $7.99 o más, y regalías del 80% menos una tarifa fija de 50 centavos en compras entre $0.99 y $7.98. Usted gana $8 en una venta de $10, y $16 en una venta de $20. Así que, si vendemos 5000 copias no reembolsadas de su libro por $20, usted ganará $80,000.

(Sí, algunos autores ya han ganado mucho más que eso en Leanpub.)

De hecho, los autores han ganadomás de $14 millones escribiendo, publicando y vendiendo en Leanpub.

Aprenda más sobre escribir en Leanpub

Actualizaciones gratuitas. Sin DRM.

¡Si compras un libro de Leanpub, recibirás actualizaciones gratuitas mientras el autor actualice el libro! Muchos autores utilizan Leanpub para publicar sus libros mientras los escriben. Todos los lectores reciben actualizaciones gratuitas, sin importar cuándo compraron el libro o cuánto pagaron (incluso si fue gratis).

La mayoría de los libros de Leanpub están disponibles en PDF (para computadoras) y EPUB (para teléfonos, tabletas y Kindle). Los formatos incluidos en un libro se muestran en la esquina superior derecha de esta página.

Finalmente, los libros de Leanpub no tienen ninguna protección DRM sin sentido, por lo que puedes leerlos fácilmente en cualquier dispositivo compatible.

Aprende más sobre los formatos de ebook de Leanpub y dónde leerlos

Escriba y Publique en Leanpub

¡Puede usar Leanpub para escribir, publicar y vender fácilmente libros electrónicos y cursos en línea, tanto en progreso como terminados!

Leanpub es una plataforma potente para autores serios, que combina un flujo de trabajo de escritura y publicación simple y elegante con una tienda enfocada en la venta de libros electrónicos en progreso.

Leanpub es una máquina de escribir mágica para autores: solo escriba en texto plano y, para publicar su libro electrónico, simplemente haga clic en un botón. (O, si está produciendo su libro electrónico a su manera, ¡incluso puede subir sus propios archivos PDF y/o EPUB y luego publicar con un solo clic!) Realmente es así de fácil.

Aprenda más sobre escribir en Leanpub