Meine zwei Cent, beim Betrachten einiger Dokumentation wie that one.
Eigentlich könnte es gültig sein.
Tatsächlich beruht der Unterschied zwischen constexpr
und const
hauptsächlich auf ihren Zweck, aber Ersteres impliziert Letzteres als Nebeneffekt.
Es gibt auch einen subtilen Unterschied: constexpr
ein Spezifizierer, während const
ist ein Qualifier.
Insbesondere:
const primäre Funktion ist es, die Idee auszudrücken, dass ein Objekt nicht durch eine Schnittstelle
Auf der anderen Seite modifiziert wird:
primäre Funktion constexpr die ist, den Bereich dessen, was zur Kompilierungszeit berechnet werden kann, zu erweitern, wodurch ein solcher Berechnungstyp sicher und auch in Kompilierungskontexten verwendbar ist
Oder noch prägnanter aus here:
constexpr - gibt an, dass der Wert einer Variablen oder Funktion in konstanten Ausdrücken
geschieht jeden Fall erscheinen kann, dass:
consExpr vor einer Variablen-Definition [...] bedeutet const
So 210
, auch wenn der Grund für die sollte man constexpr
statt const
zu verwenden ist klar, und jeder dazu neigt, sich daran zu erinnern, dass:
constexpr ist kein Allzweck-Ersatz für konst (oder umgekehrt)
Es ist eine Tatsache, dass constexpr
verwenden Sie sagen eigentlich, dass dieses Mitglied implizit const
ist (auch Sie haben eine Reihe von spezifischeren Einschränkungen, wie das Element definiert werden).
Wie auch immer, sobald es definiert ist, ist das Mitglied nicht mehr als ein Datenelement mit dem Qualifikationsmerkmal const
(das in konstanten Ausdrücken verwendet werden kann), was Sie aus Ihrer Klasse deklarieren.