Best books to learn C++20? My list & reviews

I would like to share with you my personal wish list of the books / e-books that I’m considering the best ones to learn C++20.

Which are the best books to learn C++20?

I asked different people and on social media (e.g., on this LinkedIn group for C++ professionals and Twitter) this question: if you should suggest a book to learn the C++ programming language – and in particular C++20 – which books would you suggest to read? There were many answers to this question and I realized that many other people could benefit from my personal research.

I created my own wish list and – basing on the information found in Internet – I’ve written down my initial opinions. In the future, I will review to many of these books, confirming or confuting my initial thoughts.

The list of books is sorted by the discussed topics. The first two books you’re going to read about provide a general overview of the C++ standard and those books probably represent a “must-have” in your library, if you daily use C++ at work. The third and fourth books are more focused on C++20. The fifth book is probably the one I wish to have more in my library, since I’m really interested to upskill my knowledge of the optimization techniques.

1. The C++ Standard Library

written by Rainer Grimm

My first impression is that this book provides a general overview of the C++ programming language (including C++20). Indeed, this book has been thought to become “a concise reference of the C++ library in about 300 pages” mainly for C++ professionals.

This book is for you if you are deeply familiar with the C++ programming language. Otherwise, if you are a C++ beginner, maybe it is better starting from a book explaining the C++ core language.

2. Professional C++ – Fifth Edition

written by Marc Gregoire

This book represents one of my top choices. The Fifth Edition should also also describe many aspects of the new C++ standard version.

This book is mainly composed of the following five parts: 1) “Introduction to Professional C++”, 2) “Professional C++ Software Design”, 3) “C++ Coding the Professional Way” (the core of this book, divided into 18 Chapters!), 4) “Mastering Advanced Features of C++” (i.e., extending the STL Standard Library, templates, concurrency) and 5) “C++ Software Engineering” (efficiency, debugging, design patterns).

3. C++20 Get the Details

written by Rainer Grimm

I’m expecting this to be one of the best books to learn C++20. The title is clear and it does not need any explanation.

This book is divided into main four sections: 1) quick overview of the C++20 tools and features, 2) a detailed analysis of C++20 programming language, 3) a detailed analysis of the new Standard Library (STL) features and 4) a detailed analysis of new Concurrency tools.

4. Concurrency with Modern C++

written by Rainer Grimm

This book explains the details of concurrency in modern C++.
In C++11 and C+14, only basic blocks can be used to implement concurrent or parallel programs. In C++17 and C++20, new features have been introduced. C++17 adds parallel algorithms for the Standard Library (STL), meaning that most of the STL algorithms can be executed concurrently. C++20 adds some new features (e.g., std::jthread).

This book seems particularly interesting. The author is also planning a new version for the incoming C++23 programming language and to write a new chapter on the lock-free data structures.

5. C++ High Performance: Master the art of optimizing the functioning of your C++ code, 2nd Edition

written by Bjorn Andrist, Viktor Sehr and Ben Garney (Foreword)

This book has been suggested from different persons. I’m really interested to improve the art of optimizing the C++ code, to run faster and use less amount of resources. For this reason, even if this book is at the end of my list, represents one of my top choices as well.

With regards to the organization of this book, after a brief overview of the C++ programming language is provided, different topics are being covered: data structure optimization, memory management, algorithms, ranges, and containers from the standard library, code readability, custom iterators, concurrent programming, and lock-free data structures.

The Second Edition explains many C++20 topics and the code samples have been properly updated and revised.

Which resources and/or books are you using to learn C++20? If you feel you can help other people to upskill their knowledge of C++20, do not hesitate to leave a comment suggesting your preferred books on C++20.