Рассмотрим следующий код:
constexpr const int* address(const int& r)
{
return &r;
}
int main()
{
int x = 10;
constexpr const int* p = address(x); //error
_getch();
return 0;
}
Это ошибка: "вызов функции должен иметь постоянное значение в постоянном выражении". Хорошо.
Два вопроса:
-
Если 'x' объявлен static, ошибок нет. Почему?
-
Как можно получить адрес переменной во время процесса компиляции? Не распределяются ли они во время выполнения?