मैं Boost.Interprocess के साथ एक प्रयोग के हिस्से के रूप में एक फ़ंक्शन लिख रहा हूं। फ़ंक्शन में मैं constexpr char*
घोषित एक चर के लिए एक स्ट्रिंग अक्षर निर्दिष्ट करता हूं। जब मैं ऐसा करता हूं, तो मुझे मिलता है:constexpr और बहिष्कृत रूपांतरण चेतावनी
warning: deprecated conversion from string constant to char* [-Wwrite-strings]
।
constexpr
की मेरी समझ यह है कि एक परिवर्तनीय घोषणा में यह वैरिएबल घोषित किया गया था कि चर को const
घोषित किया गया था, लेकिन अतिरिक्त शर्त के साथ कि चर प्रारंभ किया जाना चाहिए, और प्रारंभिक निरंतर अभिव्यक्ति के साथ होना चाहिए।
इस समझ के साथ मैं const char*
के रूप में व्यवहार करने की अपेक्षा करता हूं, और इसलिए चेतावनी जारी नहीं करता है। क्या मुझे कुछ याद आ रहा है कि constexpr
कैसे काम करता है?
मैं -std = C++ 0x का उपयोग कर जीसीसी 4.6.0 20110306 के साथ संकलित कर रहा हूं।
जारी किए जाने वाले चेतावनी के लिए किसी भी तर्क की सराहना की जाएगी। धन्यवाद!
धन्यवाद। मैंने पॉइंटर्स के अन्य 'कॉन्स्ट' को नजरअंदाज कर दिया। मैंने घोषणा को 'कॉन्स्टेक्स कॉन्स चार *' में बदल दिया और चेतावनी गायब हो गई। धन्यवाद! – mmoran