Э не... В шаблоне могут быть алгоритмы работы с типами, влияющими
на результат инстанцирования. Эти алгоритмы тоже надо как-то
проверять. Сейчас это делается руками. Проверка инстанцированного
кода это уже прикладная задача. Но ведь библиотечный код, состоящий
из шаблонных классов, тоже надо проверять. Насчёт проверки синтаксиса в шаблонах. Он конечно не идеален. Если алгоритм подразумевает сравнение двух объектов, а мы подадим на вход несравниваемый объект, то конечно получим ошибку. Или обратимся к методу или данным, которых в объекте нет. Тут нам на помощь спешат концепты, они позволяют наложить разумные ограничения. Но уж точно, в отличии от препроцессора, код будет проверен на синтаксис языка 100% и в результате инстанциации лишние скобки и точки с запятой изниоткуда не выпрыгнут.