2016-03-29 9 views
8

क्या इन सदस्य चर के बीच अंतर है:सी ++ 11/14 में स्थिर कॉन्स बनाम constexpr सदस्य फ़ील्ड?

struct my_class { 
    static const int i = 0; 
    static constexpr int j = 0; 
}; 

तो मेरी समझ सही है, मैं दोनों i और j के रूप में संकलन समय स्थिरांक उपयोग करने में सक्षम हूँ। यही है, std::array<int, my_class::i> और std::array<int,my_class::j> दोनों काम करना चाहिए।

+5

संभावित डुप्लिकेट http://stackoverflow.com/questions/14116003/difference-between-constexpr-and-const) –

+0

उस प्रश्न को पढ़ने के बाद, मैं अभी भी अपने प्रश्न का उत्तर नहीं समझ सकता :-) – amin

+0

@ हुममहेल्फावी मैं जानना चाहता हूं कि कॉन्स्टेक्सर स्थिर होने पर यह क्या अंतर करता है। वह थोड़ा अलग है। – amin

उत्तर

7

अभिन्न या गणना प्रकार के सदस्यों के लिए कोई अंतर नहीं है (जैसा कि आपके उदाहरण में है)। अन्य सभी प्रकार के, निरंतर भाव require constexpr के लिए:

एक lvalue करने वाली rvalue रूपांतरण (4.1), जब तक यह

  • अभिन्न या गणना प्रकार की एक गैर अस्थिर glvalue है कि एक को संदर्भित करता है के लिए लागू किया जाता है एक पूर्ववर्ती आरंभीकरण के साथ पूरा नॉन-वोलाटाइल स्थिरांक वस्तु, एक निरंतर अभिव्यक्ति, या के साथ प्रारंभ [...]
  • एक गैर अस्थिर glvalue कि एक गैर अस्थिर वस्तु constexpr के साथ परिभाषित करने के लिए संदर्भित करता है, या कि एक गैर परिवर्तनशील को संदर्भित करता है इस तरह के उप-ऑब्जेक्ट का ऑब्जेक्ट, या [...]
([के बीच \ `constexpr \` और \ 'स्थिरांक \ `अंतर] की
संबंधित मुद्दे