Re[4]: Что умеет C++ времени компиляции?
От: B0FEE664  
Дата: 18.07.23 09:36
Оценка: +2
Здравствуйте, 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 затруднительно, а вот компилятор мог бы, но...
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.