Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Не все компиляторы C++ основаны на AST. Главный пример такого динозавра — это MS Visual Studio
We should really do a Channel 9 video on this topic. No we haven't abandoned this. Yes, there is an AST now. There is still modernization work to be done. No, we haven't abandoned our frontend for Clang although we will also support clang. (see recent blog posts)
Аналогично, сами шаблоны могут быть только классами (структурами) или функциями.И переменными.
Использование того же самого языка для программ и метапрограмм не обязательноЯ с вами по большей части согласен, но и мысль иметь схожий синтаксис для языка и мета-языка тоже заманчива. В основе мета-генерации будут лежать всё равно все те же основы, что и при работе с «обычными» данными: определения, ветвления, циклы. А пройтись по мапе целых чисел или по мапе операторов языка разницы особой не имеет: суть цикл (за вычетом требования constexpr ко всем участникам последнего). Главное, чтобы вызов обычной функции и макроса в коде различались.
Метапрограммирование: какое оно есть и каким должно быть