Il C++ Programming Language quarta edizione - Bjarne Stroustrup: (sottolineatura mia)Un constexpr è più "costante" di const?
2.2.3. Costanti
In alcuni punti, espressioni costanti sono tenuti per regime linguistico (ad esempio, limiti di matrice (§2.2.5, §7.3), etichette di casi (§2.2.4, §9.4.2) , alcuni argomenti del modello (§25.2) e le costanti dichiarate usando constexpr). In altri casi, la valutazione in fase di compilazione è importante per le prestazioni. Indipendentemente dai problemi di prestazioni, la nozione di immutabilità (di un oggetto con uno stato non modificabile) è un'importante preoccupazione di progettazione (§10.4).
Sembra che Stroustrup suggerisce qui che constexpr
assicura immutabilità di un oggetto meglio di un tradizionale dichiarazione const
. È corretto? Ci sono modi in cui constexpr
può essere più sicuro/meno volatile rispetto const
, o fa Stroustrup semplicemente dire che dato che ci sono modi per utilizzare constexpr
che non sono supportate con const
(vedi Is constexpr really needed?), nei casi immutabilità può essere assicurata tramite constexpr
?
Correlato a ["Espressioni costanti" precedenti a C++ 11] (http: // stackoverflow.it/q/26024942/1708801) –
Non riesco a trovare la mia copia del libro per verificare il contesto, ma poiché constexpr non garantisce l'immutabilità, sarei sorpreso se questo è ciò che sta suggerendo. Dalla tua breve citazione mi sembra che stia semplicemente dicendo che l'immutabilità è importante, non che è meglio per Constexpr che per averlo ottenuto rispetto a const, o viceversa. –
@JonathanWakely - Forse hai ragione, è solo gettato lì perché il soggetto generale è ciò che chiama _immutabilità_. Sto mettendo l'intero paragrafo lassù ora - è una sintesi del materiale su 'constexpr', quindi ho capito che c'era qualcosa di speciale su' constexpr', come gli altri punti menzionati qui, ma forse no. – Vector