मुझे लगता है कि यह विशेष रूप से अनुमति है। सी ++ 03, 15 के लिए।1/3 कहते हैं:
एक थ्रो-अभिव्यक्ति एक अस्थायी वस्तु initializes, कहा जाता अपवाद वस्तु,
और 12/15 का कहना है: जब एक अस्थायी वर्ग वस्तु
कि संदर्भ (12.2) को एक क्लास ऑब्जेक्ट में प्रतिलिपि नहीं किया जाएगा, उसी सीवी-अयोग्य प्रकार के साथ, कॉपी ऑपरेशन को टेम्पो - रैरी ऑब्जेक्ट को सीधे बनाकर छोड़ा जा सकता है छोड़े गए प्रतिलिपि
तो की लक्ष्य में, गुप्त छिपने की जगह जहां में उड़ान अपवाद रखा जाता है, मानक द्वारा परिभाषित किया गया है एक अस्थायी हो सकता है, और इसलिए कॉपी-इलिजन लिए मान्य है।
संपादित करें: ओह, मैंने अब और पढ़ा है। 15.1/5:
अस्थायी वस्तु के उपयोग अस्थायी वस्तु (12.2) के इस्तेमाल से जुड़े कंस्ट्रक्टर्स और विनाशकर्ता के निष्पादन के लिए छोड़कर कार्यक्रम के अर्थ को बदले बिना समाप्त किया जा सकता है, तो तो हैंडलर में अपवाद को फेंक अभिव्यक्ति के तर्क के साथ सीधे प्रारंभ किया जा सकता है।
अधिक स्पष्ट नहीं मिलता है।
चाहे वह वास्तव में होगा ... यदि पकड़ खंड अपवाद को फिर से उठाना था (जिसमें इसे गैर-दृश्य कोड कहा जाता है), तो कार्यान्वयन की आवश्यकता है कि "अस्थायी वस्तु अपवाद वस्तु कहा जाता है" अभी भी आसपास होना है। तो उस प्रतिलिपि पर संभव होने पर कुछ प्रतिबंध हो सकते हैं। स्पष्ट रूप से एक खाली पकड़ खंड इसे फिर से उठा नहीं सकता है।
स्रोत
2011-09-13 12:22:44
दिलचस्प है, हालांकि उद्धरण काफी संकीर्ण है ... इसलिए यह सुनिश्चित करना मुश्किल है कि यह वास्तव में इस विशेष स्थिति को संदर्भित करता है। –
@Mattieu: मैं सभी प्रासंगिक उद्धरण जोड़ने के बारे में थोड़ा आलसी था, किसी भी तरह, यहां यह है। –
+1 फिर, यहां यह स्पष्ट है कि इसकी अनुमति है। –