constexpr

constexpr ist ein in C ++ 11 eingeführter Modifikator, der den Compiler darüber informiert, dass der Wert einer Funktion oder Variablen bekannt ist oder zur Kompilierzeit berechnet werden kann. Als solches kann es als eine Konstante an Orten verwendet werden, wo es sonst nicht sein könnte.
1
Antwort

Konnte nicht-statische Member-Variable im consExpr-Konstruktor (C ++ 14) geändert werden?

%Vor% URL des Online-Compilers: Ссылка Compiler: clang 3.4 (mit -std = c ++ 1y) System: Linux 3.2 Wenn ich L2 lösche, kompiliert dieser Code. Wenn ich L2 hinzufüge, beschwerte sich der Compiler "Modifikation des Objekts von Const-qual...
14.05.2014, 06:47
2
Antworten

Gibt es Fälle, in denen constexpr vermieden werden sollte, auch wenn es verwendet werden könnte?

Wenn ein Objekt als const deklariert wird, ist dessen Wert garantiert nur zur Laufzeit verfügbar, aber wenn es als constexpr deklariert wird, ist der Wert garantiert sowohl während der Kompilierung als auch zur Laufzeit verfügbar. Wenn ich...
03.01.2014, 04:36
1
Antwort

Initialisierung eines statischen consExpr-Klassenelements vom Typ enum-class durch explizite Konvertierungsfunktion

Ich habe eine Diskrepanz zwischen dem Verhalten von g ++ 4.8.1 und clang ++ 3.4. Ich habe eine Klasse A vom Literaltyp, die eine explicit constexpr -Konvertierungsfunktion hat, um enum class E einzugeben. Gcc ermöglicht es mir,...
07.01.2014, 13:16
1
Antwort

Vorwärtsdeklaration einer 'constexpr' Funktion in einer anderen Funktion - Compilerfehler?

Bei der Erstellung eines MCVE für dieses Problem, über das ich gestolpert bin, habe ich die folgende Diskrepanz zwischen Compilern gefunden: Betrachten Sie den folgenden Code: %Vor% Dieser Code wird in Clang 3.8.0 kompiliert, schlägt ab...
30.05.2016, 13:22
3
Antworten

Kann C ++ constexpr-Funktion tatsächlich nicht konstanten Ausdruck als Argument akzeptieren?

Ich habe eine constexpr-Funktion wie folgt definiert: %Vor% Und das ist was in der Hauptfunktion: %Vor% Das Programm wurde unter OS X 10.8 mit dem Kommando clang ++ kompiliert. Ich war überrascht, dass der Compiler keine Fehlermeldung üb...
23.12.2013, 16:17
2
Antworten

Rückgabe einer C-Zeichenfolge in einer constexpr-Funktion: Warum keine Warnung vom Compiler?

Betrachten Sie den folgenden Code: %Vor% Ist das normal, dass mein Compiler keine Warnung anzeigt? Ist es definiertes Verhalten? Habe ich die Garantie, dass das Programm "Hello World!" anzeigt? Ich würde erwarten, dass "Hello World!" n...
28.07.2017, 06:54
3
Antworten

C ++: Strukturelement in einer switch-Anweisung

Ich schreibe einen Mikroprozessor-Emulator in C ++, und eines meiner Ziele war es, den Code sehr lesbar zu machen. Um Opcodes zu implementieren, habe ich eine Struktur, die ich benutze, um einzelne Prozessoranweisungen darzustellen, und sie enth...
12.09.2014, 06:04
3
Antworten

Iteriere über Vorlagenklassen in C ++ 11

Angenommen, ich habe eine Klasse mit einer solchen Definition: %Vor% Die Frage ist, wie man mit N? über diese Klassen iteriert. %Vor% Vielleicht gibt es eine neue Funktion in C ++ 11 oder eine coole Verwendung von contrexp . Und näch...
25.03.2014, 17:30
1
Antwort

Unterschied zwischen Zeichenfolgenliteral und consxpr-Array von Zeichen

Ich habe mich gefragt, ob es einen Unterschied gibt zwischen dem, was von ptrToArray und ptrToLiteral im folgenden Beispiel gezeigt wird: %Vor% Ist mein Verständnis, dass constExprArray und die beiden "hello" Literale alle Kompi...
21.03.2014, 04:20
1
Antwort

constexpr Tiefenbegrenzung mit Clang (fcontexpr-Tiefe scheint nicht zu funktionieren)

Gibt es überhaupt eine Konfiguration für die Instantiierungstiefe von conexpr? Ich laufe mit -fconstexpr-depth = 4096 (mit clang / XCode). Trotzdem kann dieser Code mit Fehler nicht kompiliert werden: Die Contex-Variable fib_1 muss durch eine...
05.07.2014, 23:42