Warum muss conexpr statisch sein?

8

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%     
The Mask 13.04.2014, 18:38
quelle

1 Antwort

12

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?

%Vor%

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

%Vor%

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.

    
Johannes Schaub - litb 13.04.2014, 18:50
quelle

Tags und Links