Por que constexpr deve ser estático?
Depois de ler isto e isto ainda me sinto confuso sobre este tipo de expressões:
static constexpr int = 0;
AFAIK, em C ++:
staticgarante o endereço de memória vitalícia ao longo de toda a execução e inicialização segura com threads simultâneosconstexprgarante avaliação de tempo de compilação como rvalue, o que significa que não deve ter endereço de memória
Eles parecem contraditórios para mim. staticgarante que a variável terá um endereço de memória de longa data, enquanto constexprgarante a suposição oposta. Surpreendentemente, a discussão no primeiro link menciona isso:
constexpr int x = 3;
const int* p = &x;
Como podemos obter o endereço de memória de xse é um rvalue?
Alguém poderia explicar isso? desde já, obrigado
Respostas
statictem vários significados. Em classes (por seu comentário), significa que o membro está associado à classe, e não a uma instância específica (objeto) dessa classe.
Para um constexpr, isso faz muito sentido. Normalmente, é inicializado por um valor conhecido pelo compilador, e não por argumentos do ctor.