संभव डुप्लिकेट निजी कॉपी पहुंच सकता है:
Can objects with private copy constructors be thrown?वी.एस. संकलक ctor
मुझे पता है के रूप में, जब आप मूल्य के रूप में वस्तु trow, प्रतिलिपि बनाई जानी चाहिए। तो अगर मौजूद है तो कन्स्ट्रक्टर को कॉपी किया जाना चाहिए। अगर प्रतिलिपि ctor मौजूद है और निजी है तो यह संकलन त्रुटि का कारण बनना चाहिए। यहां कोड नमूना
class Exception {
public:
Exception() {
cout << "Exception()" << endl;
}
~Exception() {
cout << "~Exception() " << endl;
}
private:
Exception(const Exception &c) {
cout << "Exception(c)" << endl;
}
};
और अगला कोड संकलन त्रुटि का कारण बनना चाहिए।
try {
Exception local;
throw local;
} catch (...) {
}
लेकिन वीएस 2005 और वीएस 2008 दोनों में सफलतापूर्वक उस कोड को संकलित करें और निजी सीटीओ को कॉल करें। क्या मुझे गलत है कि यह गैर मानक व्यवहार है और संकलक में एक त्रुटि है?
मैंने बहुत जल्द बात की। http://ideone.com/hXrJd –
@ एशन: वीएस प्रमुख लोगों के बीच सबसे खराब मानक-अनुरूप सी ++ कंपाइलर होता था (जीसीसी, आईसीसी, आओ, इत्यादि ..)। इसके समर्थकों का कहना है कि अब यह बहुत बेहतर है, व्यक्तिगत रूप से मैंने इसका उपयोग बंद कर दिया है। –