Avatar ·

Quelle est la différence entre constexpr et const en C++ ?

Bonjour à tous ! J'ai commencé à étudier C++11 et je suis tombé sur le nouveau mot-clé `constexpr`. Avant, j'utilisais toujours `const` pour déclarer des variables immuables. Mais maintenant, il y a aussi `constexpr`, et je n'arrive pas à comprendre quand utiliser quoi. Par exemple, j'écris ce code : ```cpp const int size = 5; int arr[size]; // Cela fonctionne ``` Mais si j'écris : ```cpp int get_size() { return 5; } const int size = get_size(); int arr[size]; // Erreur de compilation dans les anciens standards ! ``` Je comprends que `const` interdit simplement la modification de la variable après l'initialisation, mais ne garantit pas que la valeur est connue à la compilation. En même temps, je vois des exemples avec `constexpr` : ```cpp constexpr int square(int x) { return x * x; } constexpr int val = square(5); // Ok, calculé à la compilation ``` Questions : 1. Quelle est la différence fondamentale entre `const` et `constexpr` pour les variables ? 2. Quand faut-il utiliser `constexpr` pour les fonctions ? 3. Est-ce que `constexpr` peut remplacer `con