Avatar ·

Was ist der Unterschied zwischen constexpr und const in C++?

Hallo zusammen! Ich habe angefangen, C++11 zu lernen und bin auf das neue Schlüsselwort `constexpr` gestoßen. Früher habe ich immer `const` verwendet, um unveränderliche Variablen zu deklarieren. Aber jetzt gibt es auch noch `constexpr`, und ich verstehe nicht ganz, wann ich was verwenden soll. Zum Beispiel schreibe ich solchen Code: ```cpp const int size = 5; int arr[size]; // Das funktioniert ``` Aber wenn ich schreibe: ```cpp int get_size() { return 5; } const int size = get_size(); int arr[size]; // Compiler-Fehler in alten Standards! ``` Ich verstehe, dass `const` nur verbietet, die Variable nach der Initialisierung zu ändern, aber nicht garantiert, dass der Wert zur Compile-Zeit bekannt ist. Gleichzeitig sehe ich Beispiele mit `constexpr`: ```cpp constexpr int square(int x) { return x * x; } constexpr int val = square(5); // Ok, wird zur Compile-Zeit berechnet ```