सी ++ 11 (और सी ++ 14) एसटीएल कंटेनर में noexcept
विध्वंसक और clear()
सदस्य कार्य हैं।क्या एसटीएल कंटेनर तत्व स्पष्ट रूप से विनाशकारी (अस्वीकार्य) होने की आवश्यकता है?
इसका तात्पर्य है कि तत्वों में noexcept
विध्वंसक भी हो सकते हैं, या कम से कम कंटेनरों में संग्रहीत वास्तविक तत्वों को नष्ट होने पर किसी भी अपवाद को फेंकना नहीं चाहिए- या अधिक सही ढंग से, allocator_traits<Allocator>::destroy
कॉल को फेंकना नहीं चाहिए।
क्या यह मानक में कहीं भी एक आवश्यकता (स्पष्ट रूप से या किसी अन्य स्पष्ट आवश्यकता से निहित) के रूप में निर्दिष्ट है? यदि नहीं, क्यों?
मुझे पता है is_nothrow_constructible
को noexcept
विनाशक की आवश्यकता है, लेकिन is_constructible
अकेले नहीं है, और कंटेनर आवश्यकताओं को वैसे भी लक्षण टेम्पलेट्स टाइप करने के बजाय अवधारणाओं के संदर्भ में निर्दिष्ट किया गया है।
कंटेनर विनाशक तत्व के विनाशक (ओं) से किसी भी अपवाद को पकड़ और अनदेखा कर सकता है। –