Re[3]: Ключевое сходство шаблона и макроса
От: Кодт Россия  
Дата: 11.07.23 00:41
Оценка: +3
Здравствуйте, LaptevVV, Вы писали:

LVV>Синтаксические макросы — это подстановка на этапе компиляции с проверкой получившегося синтаксиса.

LVV>Как все, надеюсь, понимают, шаблоны — это разновидность синтаксических макросов по классификации Кемпбела-Келли.

Не совсем.

Шаблоны участвуют в системе типов.
Шаблон класса не просто принимает на вход набор аргументов, подставляет что-то куда-то и выдаёт AST некой структуры с полями, именами и прочим добром.
Он ещё и тип этой структуры определяет.
И ещё он несёт информацию о своих аргументах, что позволяет сопоставлять их и извлекать — с помощью других шаблонов.

Шаблон функции участвует в перегрузках и задаёт приоритет (нешаблонные перегрузки предпочтительнее шаблонных, специализации предпочтительнее основного шаблона).

Это несколько выходит за рамки функций над AST, не так ли?

LVV>Кстати, был в свое время такой компилятор Clipper для языка Dbase II

LVV>Там в 5-й версии синтаксические макросы расцвели просто невообразимо.

О да! И, насколько помню, он прямо с самого начала был макроязыком над дубасей.

Но при этом что-то ни у кого не возникало попыток хотя бы чисто академических накатить на клиппер арифметику Пеано или ещё какую-нибудь такую фигню.
Был ли он тьюринг-полным? Ой сомневаюсь.
Ну, может, в пятой версии прикрутили фич?
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.