Próbuję zainicjować odniesienie constexpr
bez powodzenia. Próbowałemsposób inicjowania odwołania do obiektu 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
}
ale Dostaję błąd czasu kompilacji
error: constexpr variable 'z' must be initialized by a constant expression
upuszczenie const
wyników w
error: binding of reference to type 'int' to a value of type 'const int' drops qualifiers
choć miałem wrażenie, że constexpr
automatycznie implikuje const
dla zmiennej deklaracje.
Więc moje pytania to:
- Czy
constexpr
referencje kiedykolwiek przydatne? (tj. "lepsze" niż odniesieniaconst
) - Jeśli tak, jak mogę je skutecznie zdefiniować?
PS: Widziałem kilka pytań związanych z moim, takich jak Which values can be assigned to a `constexpr` reference?, ale nie sądzę, że odpowiadają na moje pytania.
Ahh, ok, dzięki! Działa, jeśli przeniesię 'x' poza' main() '. Dlaczego jednak muszę umieścić dodatkową 'const' w definicji' z'? – vsoftco
Muszą wiązać się z czymś ze statycznym czasem przechowywania, który może być lokalnym "statycznym" lub globalnym. –
@ T.C., Tak, jeśli zrobię to statycznie (wewnątrz głównego), działa również. – vsoftco