Здравствуйте, so5team, Вы писали:
S>Да я вам даже больше скажу: class и struct, да что там, даже int или float -- это только и исключительно времени компиляции. Потом никаких классов и структур как run-time сущностей нет.
Есть разница
где и когда происходит калькуляция, т.е. компьютинг — в момент компиляции на машине разработчика или в момент запуска на машине пользователя. Пример:
#include <iostream>
constexpr int fun1(int x)
{
return 100 / x;
}
int main()
{
constexpr int result = fun1(0);
std::cout << "Result: " << result << std::endl;
return 0;
}
— такой код даже не скомпилируется, вы не сможете сделать исполняемый файл.
А вот так:
#include <iostream>
int fun1(int x)
{
return 100 / x;
}
int main()
{
int result = fun1(0);
std::cout << "Result: " << result << std::endl;
return 0;
}
— вы уже сможете собрать исполняемый файл, дать его пользователю чтобы баг произошел на его стороне.
Разница есть?
Притом, когда попытаетесь собрать все конструкции, которые можно использовать в момент компиляции — окажется что их не так уж много. Но они самые мозгодробильные.