Здравствуйте, rg45, Вы писали:
bnk>>Зря заклеймили. Если совсем в принципе, там ведь верно написано, это все для одного и того же — для генерации кода в compile-time
R>Макросы — это ни разу не про компайл тайм — это просто манипуляции с текстом программы, выполняемые ДО передачи этого тескта компилятору. И непонимание принципиальных различий между макросами и шаблонами — это стыдно (для того, кто претендует на звание опытного разработчика С++).
Ты говоришь о технической стороне вопроса, в привязке к плюсам. Под "генерацией кода во время компиляции" имеется в виду все, что происходит от написания кода, до его запуска.
Уж чем он там обрабатывается — дело десятое. Твой "препроцессор" вообще может вообще встроен в "компилятор", и отсутствовать как отдельная сущность.
Как именно производится манипуляция с исходным кодом программы — путем изменения текста, дерева (AST), во время кодогенерации, или еще как, если это хорошо, надежно и удобно работает — совершенно не принципиально.
"Метапрограммирование" на уровне изменения текста
работает например в шарпе, и ничего.