Templates and generic programming
T.2
Используйте шаблоны для выражения алгоритмов, применимых ко многим типам аргументов
Причина
Обобщённость. Минимизация объёма исходного кода. Совместимость. Повторное использование.
Пример
Это основа STL. Единственный алгоритм find легко работает с любым входным диапазоном:
template<typename Iter, typename Val>
// requires Input_iterator<Iter>
// && Equality_comparable<Value_type<Iter>, Val>
Iter find(Iter b, Iter e, Val v)
{
// ...
}
Примечание
Не используйте шаблон, если у вас нет реальной потребности более чем в одном типе аргумента шаблона. Не перегружайте абстракцией.
Контроль
??? сложно, вероятно, требует участия человека