Шаблоны могут делать намного больше, чем может сделать препроцессор макроса.
Например. существуют шаблонные специализации: Если этот шаблон инстанцируется с этим типом или константой, чем не использовать реализацию по умолчанию, но этот здесь ...
... шаблоны могут что некоторые параметры одного типа и т. д. ...
Вот некоторые источники. Вы можете посмотреть: