А вы знаете что C++ может порождать не только инструкции, включаемые в исполняемый файл (и исполняемые на машине пользователя), но так же и инструкции, который исполняются в момент компиляции.
В принципе, почти во всех ЯП есть кое-что (обычно по мелочи), что исполняется в момент компиляции/сборки на машине разработчика. Как минимум всегда можно написать 24*7 и оно вычислит.
Но C++ пошел дальше — там можно почти все, но с ограничениями! Такие ограничения C++ времени компиляции:
1. Нет обращения к изменяемым глобальным переменным, нет статических переменных внутри функции и пр. (в т.ч. нет const_cast).
2. Нет динамического выделения памяти и связанного с ним (в т.ч. полноценного полиморфизма).
3. Нет reinterpret_cast.
4. Нет вызова системных функций.
5. ?
Зато все остальное — можно юзать.
Хотя вот эти 4 пункта накладывают такие ограничения, что язык изменяется до неузнаваемости. К примеру, вот
так выглядит счетчикАвтор: rg45
Дата: 27.11 18:42
(да, оказывается можно ухитриться).
И сам вопрос. А что если снять ограничения? Какие риски? Вот будет компил-тайм полноценным C++ языком. И что плохого случится?