Я пытаюсь инициализировать ссылку constexpr
без успеха. Я попробовал
#include <iostream>
constexpr int& f(int& x) // can define functions returning constexpr references
{
return x;
}
int main()
{
constexpr int x{20};
constexpr const int& z = x; // error here
}
но я получаю ошибку времени компиляции
error: константа constexpr 'z' должна быть инициализирована константным выражением
Удаление const
приводит к
error: привязка ссылки к типу 'int' к значению типа 'const int' drop qualifiers
хотя у меня было ощущение, что constexpr
автоматически подразумевает const
для объявлений переменных.
Итак, мои вопросы:
- Полезны ли ссылки
constexpr
? (то есть "лучше", чемconst
ссылки) - Если да, как я могу их эффективно определить?
PS: Я видел пару вопросов, связанных с моим, например Какие значения могут быть присвоены ссылке` constexpr`?, но я не знаю, Думаю, они решают мои вопросы.