C++ में वेरिएबल्स के लिए const vs constexpr: क्या अंतर है और क्या चुनें?
सभी को नमस्ते! मैं C++11/14 सीख रहा हूँ और वेरिएबल्स घोषित करते समय `const` और `constexpr` के बीच अंतर को लेकर भ्रमित हूँ। मैं समझता हूँ कि दोनों कीवर्ड वेरिएबल को अपरिवर्तनीय बनाते हैं, लेकिन हर जगह लिखा है कि ये एक जैसे नहीं हैं।
यहाँ एक उदाहरण है जो मुझे भ्रमित करता है:
```cpp
const int x = 42; // विकल्प 1
constexpr int y = 42; // विकल्प 2
const int z = foo(); // काम करता है
constexpr int w = foo(); // कंपाइलेशन एरर, अगर foo() constexpr नहीं है
```
मैंने पढ़ा है कि `constexpr` कंपाइल टाइम पर गणना की गारंटी देता है, जबकि `const` नहीं देता। लेकिन फिर `const` की आवश्यकता क्यों है, अगर `constexpr` अधिक सख्त है? और मैं वास्तविक प्रोजेक्ट्स में उन वेरिएबल्स के लिए `const` का व्यापक उपयोग क्यों देखता हूँ जो स्पष्ट रूप से कंपाइल टाइम पर ज्ञात हैं?
एक और सवाल: अगर मैं `const int size = 10;` लिखूं और