06 — The 2026 Flag & Kill List¶
Every resource named here appears on someone’s “must-read C++ book” recommendation somewhere on the internet. Every one is either dead, actively harmful, superseded, or a distraction for a returning-to-C++ ML engineer in 2026. Read this once. Save weeks.
The rule for a resource to make this list: there exists a better resource of the same length, freely or cheaply available, published within the last 5 years.
Kill: pre-C++11 books¶
C++ before C++11 is a different language. Anything written before 2012 will teach you:
Raw
new/deleteas the default (should bestd::make_unique/std::make_shared)NULLinstead ofnullptrtypedefinstead ofusingCopy semantics only; no
std::moveHand-rolled range-for loops with iterator boilerplate
Manual
Rule of 3when you should reach forRule of 0boost::versions of what becamestd::in C++11/14 (shared_ptr,thread,chrono,bind,function)No
auto, noconstexpr, no lambdas, no variadic templates
Unlearning these defaults costs more than learning modern C++ from scratch. Concrete titles:
Bruce Eckel — Thinking in C++ Vol 1 & 2 (2000, 2003)¶
Status: Free PDFs still circulate. Do not read.
Reason: Pre-C++11. Eckel himself moved to Python and Kotlin and hasn’t updated the book.
Replacement: Stroustrup, A Tour of C++ 3rd ed.
Stanley Lippman et al. — C++ Primer, 5th Edition (2012)¶
Status: Still recommended by many “top C++ books” list posts. C++11 vintage.
Reason: 2012 book. Missing C++14/17/20/23 entirely — no
autodeduction rules updates, no generic lambdas, no fold expressions, noif constexpr, no ranges, no concepts, no coroutines, nostd::format, no modules. The idioms taught (heavy inheritance, raw pointers passed to functions, C-style casts in samples) are dated.Replacement: Stroustrup, A Tour of C++ 3rd ed (2022) OR Marc Gregoire, Professional C++ 6th ed (2024).
Nuance: Not bad — it was the best book of its year. But you have 4 more C++ standards of material to absorb, and this book teaches a version of C++ nobody writes anymore.
Andrew Koenig & Barbara Moo — Accelerated C++ (2000)¶
Status: Historical classic. Do not read for learning; read only if curious about C++ pedagogy history.
Reason: 26 years old. Pre-STL-mainstream, pre-C++11, no smart pointers.
Replacement:
learncpp.comcovers the same ground in a modern way for free.
Bjarne Stroustrup — The C++ Programming Language, 4th Edition (2013)¶
Status: This is Stroustrup’s big book — 1300+ pages — as opposed to A Tour of C++. C++11 vintage.
Reason: Stroustrup himself replaced it with Tour of C++ 3rd ed (2022) and PPP 3 (2024) for pedagogy. The 4e is now reference-only for C++11 language rules.
Replacement: Tour of C++ 3e for learning; cppreference.com for reference.
Herbert Schildt — anything¶
Status: Notoriously error-prone. Do not touch.
Reason: Schildt’s books have a decades-long reputation in the C++ community for teaching incorrect language semantics. Search “Schildt C++ review” for the historical record.
Replacement: Anyone else on this list who isn’t dead.
Robert Lafore — Object-Oriented Programming in C++ (2001)¶
Status: Popular in Indian engineering colleges as prescribed text. Skip.
Reason: Pre-C++11. Encourages inheritance-heavy design that the modern C++ community has moved away from. Written for pedagogy at a time when “OOP” meant “Java-style inheritance,” which is not how modern C++ organizes code.
Replacement: For your college-era memory: Stroustrup Tour 3e ch. 4–5. For deeper OO/design: Klaus Iglberger, C++ Software Design (2022).
E. Balagurusamy — Object Oriented Programming with C++¶
Status: Prescribed in many Indian university syllabi. Skip for professional development.
Reason: Written for exam-passing, not engineering. Multiple editions but core content is 20+ years old. Contains examples that would not compile under modern C++ compilers with strict flags.
Replacement:
learncpp.com(free) is more current, more accurate, and more thorough.
Yashavant Kanetkar — Let Us C++¶
Status: Cousin volume to Let Us C. Popular in India. Skip.
Reason: Same problems as Balagurusamy — Indian college textbook, exam-oriented, dated idioms.
Replacement: Same as above.
Kill: old tutorials that rank high on Google¶
cplusplus.com tutorials¶
URL:
https://cplusplus.com/doc/tutorial/Status: Still online. Skip. The reference section of cplusplus.com is sometimes tolerable, but the tutorial section is C++03/11 vintage and hasn’t been updated in years.
Replacement:
learncpp.com(see02_online_courses.md).
tutorialspoint.com C++¶
URL:
https://www.tutorialspoint.com/cplusplus/Status: Popular for Google SEO reasons. Skip. Content is derivative, often incorrect, and pre-modern.
Replacement:
learncpp.com.
GeeksforGeeks C++ articles¶
URL:
https://www.geeksforgeeks.org/c-plus-plus/Status: Read with extreme caution. GfG is India-authored, so relatable, but articles are user-contributed and quality varies wildly. Common problems: pre-modern idioms,
using namespace std;everywhere, missingconst-correctness, dated STL usage.Verdict: OK for algorithm-problem explanations (which is what GfG is really for). Not OK for C++ language learning.
Replacement for language learning:
learncpp.com. For DSA in C++: see../03_phase_2_dsa_in_cpp/.
javatpoint C++, w3schools C++, programiz C++¶
Status: All tutorial mills. Skip.
Replacement:
learncpp.com.
Kill: outdated tooling guides¶
Any pre-2020 Makefile / autotools tutorial¶
Reason: Modern C++ dev uses CMake with presets, or Bazel, or Meson. Handwritten Makefiles are appropriate only for tiny (~5 file) toy projects or for teaching what CMake generates under the hood.
Replacement: Craig Scott, Professional CMake + Henry Schreiner’s free “Modern CMake” online book.
Any pre-2020 CMake tutorial without target_* commands¶
Reason: Pre-3.0 CMake (variable-based,
include_directories()globally,link_libraries()) is a maintenance nightmare and actively harmful to learn. Any tutorial that doesn’t usetarget_include_directories,target_link_libraries,target_compile_featuresis teaching legacy CMake.Signal: If a CMake tutorial mentions
CMAKE_CXX_FLAGSbefore it mentionstarget_compile_options, close the tab.Replacement: Same as above.
Any pre-2019 GCC / Clang setup guide for macOS¶
Reason: macOS ships Apple Clang (Xcode CommandLine Tools). Apple Clang lags mainline LLVM by ~2 years and has non-obvious differences (e.g., different libc++ availability). Homebrew LLVM is the answer for a modern C++20/23 workflow.
Replacement:
../11_tools_setup/01_day1_macos_setup.mdin this repo.
boost:: blog posts for features now in std::¶
Reason:
boost::shared_ptr→std::shared_ptr.boost::thread→std::thread.boost::filesystem→std::filesystem.boost::any→std::any.boost::optional→std::optional.boost::variant→std::variant.boost::format→std::format.When Boost is still right:
boost::asio(untilstd::execution-based networking lands),boost::graph,boost::multi_index,boost::hana(compile-time metaprogramming),boost::spirit(parsing). Seeawesome-modern-cppfor the current shortlist.
Flag but keep: legacy resources with narrow modern use¶
Meyers — Effective C++ 3rd ed (2005) and More Effective C++ (1996)¶
Status: Skip for learning. Superseded by Effective Modern C++ (2014).
Nuance: If you inherit a C++03 codebase (some legacy Indian enterprise code still is), Effective C++ 3e still describes that world accurately. But do not learn C++ from it.
Verdict: Don’t buy. If someone gives you a copy, keep on the shelf as historical reference.
Sutter — Exceptional C++ (2000), More Exceptional C++ (2002), Exceptional C++ Style (2004)¶
Status: Same nuance as Meyers’s older books. Sutter’s GotW website (
https://herbsutter.com/gotw/) has modernized many of the items with C++11/14/17 updates — read those instead.
Alexandrescu — Modern C++ Design (2001)¶
Status: Skip. The techniques (policy-based design, type lists,
Lokilibrary) were revolutionary in 2001 and are now either language features (variadic templates →std::tuplehandles typelists) or specific patterns covered in Pikus’s Hands-On Design Patterns 2e.Verdict: Historical read only. Alexandrescu himself moved to D.
Anthony Williams — C++ Concurrency in Action 1st edition (2012)¶
Status: Skip. Buy the 2nd edition (2019). Do not accept a used 1e “at half price” — it will teach you pre-C++17 concurrency.
Sutter & Alexandrescu — C++ Coding Standards (2004)¶
Status: 22 years old. Skip.
Replacement: ISO C++ Core Guidelines (
isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) is the community-maintained modern equivalent.
Vandevoorde & Josuttis — C++ Templates: The Complete Guide 1st ed (2002)¶
Status: Buy the 2nd edition (2017) if any. Do not read the 1e — it predates variadic templates,
constexpr, and half the modern template toolkit.
Sedgewick — Algorithms in C++ (2001, 2011 3e)¶
Status: Skip for C++. The algorithm content is fine; the C++ is pre-modern.
Replacement for DSA in C++: See
../03_phase_2_dsa_in_cpp/. For algorithms in the abstract: Sedgewick’s Coursera course (in Java) + CLRS + LeetCode.
The pattern¶
If a C++ resource was published before 2019 (adoption of C++20-track features into major compilers), and it isn’t the current edition of a Stroustrup/Josuttis/Meyers reference, treat it as suspect. Newer isn’t always better in engineering — but in a language that changed as much as C++ did between 2011 and 2023, publication date is a strong signal.
Test yourself: pick up any C++ book. Grep the table of contents mentally for the words concept, ranges, coroutine, module, constexpr (in the “consteval / constinit” era). If zero of those appear, you’re holding pre-C++20 material. Adjust expectations accordingly.