Есть много мест, где я вижу шаблонный класс и не могу не подумать, почему тот, кто его написал, использовал шаблоны.
Например, класс (ы) мьютекса. Все концепции мьютекса реализованы в виде шаблонов, в которых можно просто создать несколько базовых классов или абстрактных классов с интерфейсом, который соответствует концепции.
редактировать после ответов: я думал о стоимости виртуальных функций, но разве не стоит иногда отбрасывать очень небольшое снижение производительности для лучшего понимания? Я имею в виду, что иногда (особенно с boost) действительно сложно понять шаблонный код и расшифровать ошибки компилятора в результате неправильного использования шаблонов.