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/delete as the default (should be std::make_unique / std::make_shared)

  • NULL instead of nullptr

  • typedef instead of using

  • Copy semantics only; no std::move

  • Hand-rolled range-for loops with iterator boilerplate

  • Manual Rule of 3 when you should reach for Rule of 0

  • boost:: versions of what became std:: in C++11/14 (shared_ptr, thread, chrono, bind, function)

  • No auto, no constexpr, 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 auto deduction rules updates, no generic lambdas, no fold expressions, no if constexpr, no ranges, no concepts, no coroutines, no std::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.com covers 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 (see 02_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, missing const-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 use target_include_directories, target_link_libraries, target_compile_features is teaching legacy CMake.

  • Signal: If a CMake tutorial mentions CMAKE_CXX_FLAGS before it mentions target_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.md in this repo.

boost:: blog posts for features now in std::

  • Reason: boost::shared_ptrstd::shared_ptr. boost::threadstd::thread. boost::filesystemstd::filesystem. boost::anystd::any. boost::optionalstd::optional. boost::variantstd::variant. boost::formatstd::format.

  • When Boost is still right: boost::asio (until std::execution-based networking lands), boost::graph, boost::multi_index, boost::hana (compile-time metaprogramming), boost::spirit (parsing). See awesome-modern-cpp for 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, Loki library) were revolutionary in 2001 and are now either language features (variadic templates → std::tuple handles 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.