Pre-modern C++ — the C++98 (1998) and C++03 (2003) standards, lacking the language-level features that make modern C++ usable for embedded: auto, range-for, constexpr, lambdas, smart pointers, std::array / std::optional, structured bindings, concepts. The recommendation for any embedded project still on these standards is to migrate to at least C++14, ideally C++20/23.
Migrate active embedded codebases to at least C++14 (a solid embedded baseline) and ideally C++20/23 with the Modern C++ entry as the target. Treat C++98/03 as maintenance-only on legacy products; new code should not be written against these standards in 2026.
Pre-modern C++ is when C++ was at its worst for embedded — all the verbosity of C++ with none of the safety affordances that arrived with C++11. Modern C++ (C++11 onward) is when the language became genuinely useful for firmware. Mirrors the Legacy C89/C90 → Modern C structure on the C side. Pairs with the Modern C++ (C++20/23) for Embedded entry as the migration target.