Шаблоны удобны тем, что можно не делать cpp реализацию. Совсем. Это офигенно удобно - можно делать полностью хедер-базед либрери. У меня есть такая самописная либа, и единственное что не позволяет полностью избавиться от cpp - это инициализация статических членов. Я так и не нашёл способа инитить их в хедере без препроцессора. Вот это - реально большой косяк плюсов. Ну, спрашивается, почему нельзя прописать все инициализаторы прямо в списке членов? Ну идиотизм же, в самом деле.
Это моё личное предвзятое мнение. Любое совпадение с реальностью является случайным и непреднамеренным.