Информация об изменениях

Сообщение Re[21]: Вы пользуетесь constexpr? от 01.12.2024 12:57

Изменено 01.12.2024 12:58 Shmj

Re[21]: Вы пользуетесь constexpr?
Здравствуйте, rg45, Вы писали:

R>Согласно твоим критериям, на каком языке написана данная программа?


Компил-тайм язык отличается тем что:

1. Не позволяет обращаться к изменяемым глобальным переменным (включая constinit) а так же не позволяет иметь static-переменные внутри функции, т.е. как бы запрет на состояние между вызовами функций. Сюда же запрет на const_cast.
2. Не позволяет динамически выделять память, использовать указатель на базовый объект, полноценно работать с полиморфизмом и вирт. функциями. Запрет на dynamic_cast.
3. Почему то запрет на reinterpret_cast.
4. Запрещены вызовы системных функций — результат вычисления можно поместить либо в constexpr/constinit переменную либо использовать для static_assert. Все — больше никакого внешнего воздействия с миром.

Вроде мелочи, но это сокращает возможности языка до неузнаваемости. Даже если вы попытаетесь сделать банальный счетчик вызовов функции (а оказывается это можно сделать
Автор: rg45
Дата: 27.11 18:42
) — код получится трехэтажно сложным.
Re[21]: Вы пользуетесь constexpr?
Здравствуйте, rg45, Вы писали:

R>Согласно твоим критериям, на каком языке написана данная программа?


Компил-тайм язык отличается тем что:

1. Не позволяет обращаться к изменяемым глобальным переменным (включая constinit) а так же не позволяет иметь static-переменные внутри функции, т.е. как бы запрет на состояние между вызовами функций. Сюда же запрет на const_cast.
2. Не позволяет динамически выделять память, использовать указатель на базовый объект, полноценно работать с полиморфизмом и вирт. функциями. Запрет на dynamic_cast.
3. Почему то запрет на reinterpret_cast.
4. Запрещены вызовы системных функций — результат вычисления можно поместить либо в constexpr/constinit переменную либо использовать для static_assert. Все — больше никакого внешнего воздействия с миром.

Вроде мелочи, но это сокращает возможности языка до неузнаваемости. Даже если вы попытаетесь сделать банальный счетчик вызовов функции (а оказывается это можно сделать
Автор: rg45
Дата: 27.11 18:42
) — код получится трехэтажно сложным.

В итоге из-за этой разницы получаем совсем другой язык.