Здравствуйте, rg45, Вы писали:
BFE>>Может быть полезно для кодогенерации.
R>Для кодогенерации сущесвуют custom build steps, куда можно запихать что угодно и сгенерировать что угодно.
Только вот в некоторых случаях для это нужно иметь инструменты равные компилятору по сложности.
R> Правда к С++ времени компиляции это имеет мало отношения. C++ времени компиляции — это седьмая фаза трансляции и единственно возможная кодогенерация в этот период — это генерация translation units, которую выполняет сам компилятор.
Допустим у вас есть где-то в коде перечисление:
enum class ABC { a, b, c };
И для этого enum хотите написать код, который позволит пройти во всем значениям перечисления:
for(const auto e : { ABC::a, ABC::b, ABC::c}) /*...*/;
Всё хорошо, пока кто-то не добавит ещё одно значение в ABC:
enum class ABC { a, b, c, d };
После такого изменения цикл становится некорректным. Но если цикл рождает кодогенератор, то проблем нет. Делать такое в custom build steps затруднительно, а вот компилятор мог бы, но...