Quelle est la différence entre constexpr et const en C++ ?
Bonjour ! J'ai récemment commencé à étudier C++11 et je suis tombé sur le mot-clé `constexpr`. Je comprends que `const` signifie que la valeur d'une variable ne peut pas être modifiée après l'initialisation. Mais `constexpr` semble aussi rendre la variable constante. Quelle est donc la différence ?
Par exemple, je peux écrire :
```cpp
const int x = 5;
constexpr int y = 5;
```
Les deux fonctionnent. Mais j'ai entendu dire que `constexpr` peut être utilisé avec des fonctions. J'ai essayé :
```cpp
constexpr int square(int n) {
return n * n;
}
int main() {
const int a = square(5); // Ça marche ?
constexpr int b = square(5); // Ça marche aussi ?
int arr[ square(3) ]; // Est-ce possible ?
}
```
Cela se compile, mais je ne comprends pas quel est l'avantage réel. Quand faut-il utiliser `constexpr` plutôt que `const` ? Et pourquoi `const` ne suffit-il pas ? J'ai l'impression que c'est une duplication de fonctionnalité. Expliquez-moi, s'il vous plaît, avec des exemples, quand utiliser quoi. Merci d'avance !
<<>>