क्या सी ++ 11 inline
कार्यों या विधियों के बारे में कोई गारंटी देता है, जब वे noexcept
क्वालीफायर के साथ घोषित अन्य कार्यों पर कॉल करते हैं?सी ++ 11 योग्यता योग्य और इनलाइन विधियों
class My_String { ...
const char * c_str() const noexcept;
inline operator const char *() const { return c_str(); }
};
मुझे लगता है एक अनुकूलन संकलक पूर्ण एह बिना इनलाइन विधि को लागू करने और तनाव मुक्त होने के ढेर, प्रति noexcept
योग्यता के रूप में करने के लिए स्वतंत्र होगा। मैं भी एक साधारण एक्सेसर विधि के लिए भी यह उम्मीद होती है: इस उदाहरण तुच्छ लग रहा है
... inline operator const char *() const { return m_buffer; }
है, अपवाद बात जब अन्य वर्गों या कार्यों को लागू करने के लिए इस्तेमाल की गारंटी देता है। प्रश्न: क्या सी ++ 11 मानक पता है या इनलाइन विधियों को noexcept
चिह्नित किया जाना चाहिए? या को को को कक्षा या फ़ंक्शन विनिर्देश से मेल खाने के लिए छोड़ना बेहतर है?
संपादित करें: कुछ भ्रम से बचने के लिए: noexcept
इनलाइन विधि के लिए निहित है?
उपयोगकर्ता के लिए प्रदान किया गया कोड 'noexcept' विनाशकर्ता के लिए ही निहित है, एक सरल जवाब के रूप में। –
एक अनुवर्ती पर सवाल यह है: ** एक घोषित करना चाहिए 'noexcept' जब भी संभव हो ** – Walter