Avatar ·

const vs constexpr für Variablen in C++: Was ist der Unterschied und was soll man wählen?

Hallo zusammen! Ich lerne C++11/14 und bin verwirrt über den Unterschied zwischen `const` und `constexpr` bei der Deklaration von Variablen. Ich verstehe, dass beide Schlüsselwörter eine Variable unveränderbar machen, aber überall wird geschrieben, dass sie nicht dasselbe sind.\n\nHier ist ein Beispiel, das mich verwirrt:\n\n```cpp\nconst int x = 42; // Variante 1\nconstexpr int y = 42; // Variante 2\n\nconst int z = foo(); // Funktioniert\nconstexpr int w = foo(); // Compiler-Fehler, wenn foo() nicht constexpr ist\n```\n\nIch habe gelesen, dass `constexpr` die Berechnung zur Compile-Zeit garantiert, während `const` dies nicht tut. Aber wozu braucht man dann `const`, wenn `constexpr` strenger ist? Und warum sehe ich in realen Projekten überall die Verwendung von `const` für Variablen, die offensichtlich zur Compile-Zeit bekannt sind?\n\nEine weitere Frage: Wenn ich `const int size = 10;` schreibe und