- Overload sets are collections of functions with the same name in the same scope that participate in overload resolution, and they can be used as alias parameters to enable generic programming.
- Template specialization on integer values allows treating an overload set like an array, enabling compile-time lookup tables, code generation, and dispatch based on integral constants.
- A unified vector interface can be built by using a shared template header with an integer dimension parameter, allowing dimension-generic code without duplicating type definitions.
- An ad-hoc template API is defined by the existence of successful matches in the resolution logic rather than a central definition, enabling flexible and extensible interfaces.
- Overload sets can be swapped (e.g., std.conv.to) to let users provide custom implementations, making APIs more flexible and fixable.
- Shared header mechanics in D allow overload sets to work across different declaration patterns (enum, function, template, struct) as long as the template header matches.