Avatar ·

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

Hallo! Ich habe kürzlich angefangen, C++11 zu lernen und bin auf das Schlüsselwort `constexpr` gestoßen. Ich verstehe, dass `const` bedeutet, dass der Wert einer Variable nach der Initialisierung nicht geändert werden kann. Aber `constexpr` scheint die Variable ebenfalls konstant zu machen. Was ist dann der Unterschied?\n\nZum Beispiel kann ich schreiben:\n\n```cpp\nconst int x = 5;\nconstexpr int y = 5;\n```\n\nBeide Varianten funktionieren. Aber ich habe gehört, dass `constexpr` mit Funktionen verwendet werden kann. Ich habe es versucht:\n\n```cpp\nconstexpr int square(int n) {\n return n * n;\n}\n\nint main() {\n const int a = square(5); // Funktioniert?\n constexpr int b = square(5); // Funktioniert auch?\n int arr[ square(3) ]; // Ist das möglich?\n}\n```\n\nDas kompiliert, aber ich verstehe nicht, was der wirkliche Vorteil ist. Wann sollte man `constexpr` anstelle von `const` verwenden? Und w