New York: Packt, 2018. — 355 p.
Foreword
Why C++?
C++ compared with other languages
Class interfaces and exceptions
Libraries used in this book
Automatic type deduction with the auto keyword
The lambda function
Const propagation for pointers
Move semantics explained
Representing optional values with std::optional
Representing dynamic values with std::any
Measuring Performance
Asymptotic complexity and big O notation
What to measure?
Knowing your code and hot spots
Properties of computer memory
STL containers
Parallel arrays
The iterator concept
Using STL algorithms as building blocks
The future of STL and the ranges library
Memory Management
Computer memory
Process memory
Objects in memory
Memory ownership
Small size optimization
Custom memory management
Introduction to template metaprogramming
Type traits
The constexpr keyword
Heterogeneous containers
The std::variant
Real world examples of metaprogramming
An introduction to lazy evaluation and proxy objects
Proxy objects
Postponing an sqrt computation when comparing distances
Creative operator overloading and proxy objects
Concurrency
What makes concurrent programming hard?
Concurrency and parallelism
Concurrent programming in C++
Lock-free programming
Performance guidelines
Parallel STL
Parallel algorithms
Parallel STL
Executing STL algorithms on the GPU
Boost Compute