Further Reading and Next Steps
5 min read
Appendix E: Further Reading and Next Steps
You have reached the end of the book. What comes next depends on what you want to do with C++.
This appendix is organized by topic. Each entry is a brief description of the resource and who it is for. None of these are affiliate links; they are simply things I have found genuinely useful.
Going Deeper into the Language
"Effective Modern C++" — Scott Meyers
The definitive guide to C++11 and C++14 idioms. 42 specific items, each covering a practical trap or best practice. This is the book to read after this one if you want to write professional-quality modern C++. It predates C++17 and C++20 but remains essential.
"C++ Core Guidelines" — Bjarne Stroustrup and Herb Sutter
A living document (github.com/isocpp/CppCoreGuidelines) that codifies best practices for modern C++. Not a book you read linearly — it is a reference. When you wonder "should I do X or Y in this situation?", the Core Guidelines usually have an answer with a rationale.
"A Tour of C++" — Bjarne Stroustrup
A compact overview of the entire language by its creator. Written for people who already know programming. More concise than a textbook; more authoritative than a blog post. Best read after you have the basics down — which you now do.
"C++ Templates: The Complete Guide" — David Vandevoorde, Nicolai Josuttis, Douglas Gregor
The authoritative reference on templates. Covers everything from basic function templates to the dark corners of SFINAE, template metaprogramming, and variadic templates. You do not need this until templates become central to your work.
Standard Library in Depth
cppreference.com
The indispensable online reference for everything in the C++ standard library. Accurate, up-to-date, and includes example code for almost every function. Bookmark this now. Use it every day.
"The C++ Standard Library" — Nicolai Josuttis
The complete reference book for the standard library. More readable than the standard itself. When cppreference.com leaves you with questions, Josuttis usually has the answer.
Specific Topics
Performance and Optimization
"C++ High Performance" — Björn Andrist and Viktor Sehr
Practical performance optimization: CPU caches, SIMD, lock-free data structures, coroutines for async I/O. For when you have working code and need it to be faster.
Compiler Explorer (godbolt.org)
Not a book — a website. Paste C++ code and see the generated assembly for any major compiler. Invaluable for understanding what the compiler actually does and for verifying that your optimizations have the expected effect.
Concurrency
"C++ Concurrency in Action" — Anthony Williams
The definitive book on the C++ threading and atomics library. Deep coverage of memory order, lock-free programming, and the C++17 parallel algorithms. Read Chapter 10 of this book first; then read Williams when you need more.
Error Handling
"Functional Error Handling in C++" — Sy Brand
A blog series (on blog.tartanllama.xyz) covering std::expected, monadic error handling, and how to design APIs that make error handling feel natural. Written by one of the people who designed std::expected.
Build Systems and Project Structure
"Professional CMake: A Practical Guide" — Craig Scott
The book on CMake, written by a CMake maintainer. CMake's official documentation is dense; this book teaches it as a coherent system. Essential for multi-library projects.
"The Pragmatic Programmer" — David Thomas and Andrew Hunt
Not C++-specific, but relevant to every programmer. How to structure projects, manage complexity, and write code that will still make sense in two years. The advice is language-agnostic but applies well to C++ work.
Communities
cpp.slack.com (Cpplang Slack)
The largest C++ community on Slack. Channels for every topic: beginners, libraries, games, embedded, and the language itself. The #help channel is active and genuinely helpful.
Reddit: r/cpp and r/cpp_questions
r/cpp follows news, proposals, and discussions about the language. r/cpp_questions is for asking; the community is generally helpful and the quality of answers is high.
Stack Overflow: [c++] tag
The most answered C++ questions on the internet. Search before asking — most beginner questions have good answers already. When you do ask, include a minimal reproducible example.
CppCon (cppcon.org) and C++Now
Major annual conferences. Every talk is on YouTube, going back to 2014. Searching "CppCon" + topic on YouTube is one of the best ways to find expert explanations of specific subjects.
What to Build Next
Reading is not enough. The fastest way to solidify what you have learned is to build something that matters to you. Some suggestions, in rough order of difficulty:
A CSV parser — reads a CSV file, handles quoted fields and escaped commas, returns a vector<vector<string>>. Teaches file I/O, string manipulation, and the erase-remove idiom.
A JSON parser — a subset: objects, arrays, strings, numbers, true/false/null. Teaches recursive descent parsing, error handling, and std::variant. Look at how nlohmann/json is structured as a reference.
A command-line HTTP client — uses the operating system's socket API (or a library like libcurl) to make HTTP requests and print responses. Teaches network I/O and working with third-party C libraries.
A simple interpreter — lexer + parser + evaluator for a tiny expression language. Teaches recursive data structures, smart pointers, and the visitor pattern. This is also an excellent template metaprogramming exercise.
An entity-component system — the core pattern used in game engines. Teaches data-oriented design, cache friendliness, and how to build fast, generic systems without virtual dispatch.
Your own allocator — implement a pool allocator or arena allocator that std::vector can use as a template argument. Teaches memory layout, placement new, and alignment.
The Standard: When You Need the Primary Source
The C++ standard itself is not a good learning resource — it is a specification document, not a tutorial. But when you need to know precisely what the standard says, the drafts are freely available:
- Latest C++23 draft: open-std.org/jtc1/sc22/wg21/docs/papers/2023/n4950.pdf
- eel.is/c++draft: a hyperlinked, browsable HTML version of the working draft. Useful for tracking down a specific rule.
For most questions, cppreference.com is more accessible and equally accurate.
A Closing Note
C++ is a large language with a long history. You will not learn all of it quickly, and you do not need to. The 20% of the language you use 80% of the time is what you have learned in this book: types, functions, classes, memory management, templates, the standard library, error handling, and concurrency.
The rest — template metaprogramming, custom allocators, the full details of the memory model, compiler-specific extensions — you learn as you need it. Nobody walks into a job knowing all of it.
What you have now is a foundation. Build on it.
— D.A.