C++ — это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет похожий синтаксис, но теперь это совершенно другой язык.
Тег templates используется в нескольких контекстах: универсальное программирование (особенно C++) и создание данных / документов с использованием механизмов шаблонов.
Не повторяйте себя, философия разработки программного обеспечения, направленная на уменьшение избыточности и повторения кода. Статьи о том, как рефакторинг кода, лучше подходят для codereview.stackexchange.com