Based on the comments here and another private one, I'll accept that function overloading and similar techniques are polymorphism. That defines the term as "type-based dispatch", or, in more C++ terms, "type-based invocation". I can work with that. The main focus will be on the override pattern, CRTP, and other approaches I've yet to discern.