Code-size control

extern template, erased cores, instantiation discipline.

extern template stops N translation units instantiating the same template; the thin-template idiom (type-erased core + small typed shell) keeps generic APIs from exploding binaries — chronic concerns on embedded targets.

// lib.h
extern template class Parser<Utf8>;   // declared: don't instantiate here
// lib.cpp
template class Parser<Utf8>;          // the one instantiation

No change.

if constexpr prunes dead branches per instantiation instead of generating and discarding them; fewer helper overloads exist at all.

Concepts move overload resolution to constraints (fewer instantiation attempts); modules cut parse cost, not object size — the erased-core idiom still earns its keep.

std::move_only_function and (later) function_ref offer right-sized erasure instead of worst-case std::function; import std removes megabytes of repeated header parsing.

Pack indexing and expansion-friendly reflection replace recursive template instantiation chains — the classic metaprogramming bloat generator — with flat consteval code.

C++29direction · not adopted

Direction: reflection-generated code replacing template-stamped code is the structural answer the committee is betting on.

C++26 per the final working draft; C++29 rows are proposals and direction, not adopted features.