¿Cuáles son las principales diferencias entre la versión anterior de su libro y esta?

Las diferencias principales están impulsadas por el alcance más amplio de esta segunda edición. La primera edición fue escrita para C ++ 98, y se ocupó principalmente de mecanismos básicos de plantilla y las técnicas que permiten. Muchas de las características principales del lenguaje agregadas a C ++ 11, C ++ 14 y C ++ 17 están relacionadas directa o indirectamente con las plantillas, por lo que tuvimos que cubrir la mayoría de ellas.

Como resultado, el nuevo libro es bastante más grande (más de 800 páginas frente a más de 500 páginas), a pesar de que hemos eliminado la mayor parte de la Parte IV en la primera edición (que introdujo varias aplicaciones que desde entonces se han convertido en parte del estándar biblioteca de plantillas, y me puse fecha muy rápidamente).

Como mencioné, algunas de las características más nuevas del lenguaje están conectadas indirectamente a las plantillas, por lo que nos sentimos obligados a cubrirlas en detalle. Por ejemplo, las referencias de valor no son intrínsecamente sobre plantillas, pero realmente brillan en sus contextos: por lo tanto, tratamos de ser exhaustivos al explicarlas. Lo mismo con algo como decltype. Incluso enlaces estructurados. Etc.

Otra diferencia notable es que el nuevo libro se conecta más explícitamente a la biblioteca estándar. Intentamos en varios lugares indicar cómo funcionan ciertos componentes estándar de la biblioteca. Para algunos de ellos, como el componente C ++ 17 std::variant , desarrollamos un componente paralelo similar para ilustrar la combinación de técnicas que hacen posible tales cosas. Tener a Doug Gregor en el equipo fue realmente una gran ventaja para esa parte del trabajo.