Ein Versuch, ein Member einer Struktur mit dem Attribut conexpr zu erstellen, ohne statisch zu sein, führt zu einem Compilerfehler (siehe unten). Warum das? Für einen einzelnen konstanten Wert habe ich diesen Wert im Speicher, bis das Programm terminiert ist und nicht nur der Bereich von struct? Soll ich ein Makro verwenden?
%Vor% Ich kenne die offizielle Vernunft nicht. Aber sicherlich könnte es zu Verwirrung führen. Ich kann zum ersten Mal nicht sehen, was es für ein nicht statisches Datenmitglied bedeutet, constexpr
zu sein. Können Sie Folgendes tun?
Oder bedeutet das, dass der Initialisierer immer konstant sein muss, d. h. Sie dürfen das oben Genannte nicht schreiben (weil n
nicht konstant ist / könnte möglicherweise nicht konstant sein), darf aber sagen
Die Regel, dass constexpr int n
einfach schlecht gebildet ist und nicht implizit static
ist, scheint mir gut, da ihre Semantik IMO nicht klar wäre.