संकलक प्रतिलिपि इलिजन, यहां तक कि अपनी चाल निर्माता अगर जो पैरा प्रति अनुमति दी है सी ++ 11 स्टैंडर्ड की 12.8/31 प्रदर्शन कर रहा है, नकल निर्माता, या नाशक दुष्प्रभाव हो:
जब कुछ मानदंडों को पूरा किया जाता है, तो एक क्रियान्वयन को ऑब्जेक्ट की कॉपी/चाल निर्माण को छोड़ने की अनुमति है, भले ही प्रतिलिपि/चाल ऑपरेशन के लिए चयनित कन्स्ट्रक्टर और/या ऑब्जेक्ट के लिए विनाशक दुष्प्रभाव हैं।
अवधि प्रतिलिपि इलिजन तब भी जब एक कदम elided किया जा रहा है प्रयोग किया जाता है:
कॉपी/कदम आपरेशन के इस इलिजन, बुलाया प्रतिलिपि इलिजन, की अनुमति दी है निम्न परिस्थितियों में ( को कई प्रतियों को खत्म करने के लिए जोड़ा जा सकता है):
[...]
- जब एक अस्थायी वर्ग वस्तु है कि एक संदर्भ (12.2) के लिए बाध्य नहीं किया गया कॉपी किया जाएगा/एक ही सीवी-अयोग्य प्रकार के साथ एक वर्ग वस्तु को ले जाया गया, कॉपी/कदम आपरेशन अस्थायी निर्माण द्वारा छोड़ा जा सकता है छोड़े गए प्रतिलिपि का लक्ष्य में सीधे वस्तु/ले जाने के
[...]
जीसीसी के साथ, आप -fno-elide-constructors
उपयोग कर सकते हैं प्रतिलिपि इलिजन बाधित करने के लिए। इस मामले में, आप देखेंगे कि चालक कन्स्ट्रक्टर का आह्वान किया जाता है, जैसा कि live example में है।
स्रोत
2013-06-01 12:37:48
के संभावित डुप्लिकेट [C++ 11 कदम निर्माता नहीं बुलाया, डिफ़ॉल्ट निर्माता को प्राथमिकता दी] (http://stackoverflow.com/questions/13099603/c11-move-constructor-not-called-default-constructor-preferred) – jogojapan