नहीं बना सकता मैं constexpr
std :: सरणी बना सकते हैं:constexpr std :: वेक्टर
constexpr std::array<int,5> values {1,2,3,4,5};
यह ठीक काम करता है।
constexpr std::vector<int> vec = {1,2,3,4,5};
यह मुझे एक त्रुटि देता है::
the type 'const std::vector<int>' of constexpr variable 'vec' is not literal constexpr std::vector<int> vec = {1,2,3,4,5};
औपचारिक रूप से, ऐसा इसलिए है क्योंकि 'वेक्टर' कन्स्ट्रक्टर को 'कॉन्टेक्सप्र' घोषित नहीं किया गया है। ऐसा क्यों घोषित नहीं किया जाता है? क्योंकि 'वेक्टर' कन्स्ट्रक्टर को आम तौर पर ढेर पर स्मृति आवंटित करने की आवश्यकता होती है, जो निश्चित रूप से रन टाइम पर ही किया जा सकता है। –
@ इगोर टंडेटनिक, तो कॉन्स्टेक्स वेक्टर बनाने का कोई तरीका नहीं है? – Leo
कोई नहीं है। आपको क्यों चाहिए होगा? यह मुझे थोड़ा समझ में आता है। 'वेक्टर' का पूरा बिंदु गतिशील रूप से आकार बदलने की क्षमता है। यदि आपको इसकी आवश्यकता नहीं है, तो बस 'std :: array' या सादा सरणी का उपयोग करें। –