Perché constexpr dovrebbe essere statico?
Dopo aver letto questo e questo mi sento ancora confuso su questo tipo di espressioni:
static constexpr int = 0;
Per quanto ne so, in C ++:
staticassicura l'indirizzo di memoria a vita lungo l'intera esecuzione e l'inizializzazione sicura con thread simultaneiconstexprassicura la valutazione della compilazione del tempo come rvalue, il che significa che non deve avere un indirizzo di memoria
Mi sembrano contraddittori. staticassicura che la variabile abbia un indirizzo di memoria a lungo termine mentre constexprgarantisce l'assunzione opposta. Sorprendentemente, la discussione nel primo collegamento menziona questo:
constexpr int x = 3;
const int* p = &x;
Come possiamo ottenere anche l'indirizzo di memoria di xse è un valore?
Qualcuno potrebbe spiegarlo? Grazie in anticipo
Risposte
staticha una serie di significati. Nelle classi (secondo il tuo commento), significa che il membro è associato alla classe e non a un'istanza specifica (oggetto) di quella classe.
Per a constexpr, questo ha molto senso. Viene tipicamente inizializzato da un valore noto al compilatore e non da argomenti ctor.