¿Por qué constexpr debería ser estático?
Después de leer esto y esto , todavía me siento confundido acerca de este tipo de expresiones:
static constexpr int = 0;
AFAIK, en C ++:
staticgarantiza una dirección de memoria de por vida a lo largo de toda la ejecución y una inicialización segura con subprocesos simultáneosconstexprasegura la evaluación de la compilación del tiempo como rvalue, lo que significa que no tendrá dirección de memoria
Me parecen contradictorios. staticasegura que la variable tendrá una dirección de memoria de larga duración, mientras que constexprasegura la suposición opuesta. Sorprendentemente, la discusión en el primer enlace menciona esto:
constexpr int x = 3;
const int* p = &x;
¿Cómo podemos obtener la dirección de memoria de xsi es un valor r?
¿Alguien podría explicarlo? Gracias por adelantado
Respuestas
statictiene varios significados. En las clases (según su comentario), significa que el miembro está asociado con la clase, y no una instancia específica (objeto) de esa clase.
Para un constexpr, eso tiene mucho sentido. Por lo general, se inicializa mediante un valor conocido por el compilador y no a partir de los argumentos de ctor.