पर किसी भी कंपाइलर झंडे को लागू करने के लिए कोई कंपाइलर झंडे हैं, तो अंतर्निहित परिभाषित प्रति कन्स्ट्रक्टर पीढ़ी को अक्षम कैसे करें?उपयोगकर्ता परिभाषित विनाशक
टी के उपयोगकर्ता परिभाषित प्रतिद्वंद्वी या उपयोगकर्ता द्वारा परिभाषित प्रति असाइनमेंट ऑपरेटर होने पर अंतर्निहित परिभाषित प्रतिलिपि निर्माता की पीढ़ी को बहिष्कृत किया जाता है।
परोक्ष परिभाषित प्रति असाइनमेंट ऑपरेटर की पीढ़ी पदावनत है (के बाद से सी ++ 11) अगर टी एक उपयोगकर्ता के घोषित नाशक या उपयोगकर्ता के घोषित प्रतिलिपि निर्माता है।
मैं क्लैंग, विजुअल स्टूडियो 2013 या जीसीसी में नियमों को लागू करने में रूचि रखता हूं क्योंकि कोडबेस को उन सभी के साथ संकलित किया जाएगा।
struct W {
int a;
~W() { a = 9; }
};
int main() {
W w {};
W v = w;
}
Johnathan Wakely की टिप्पणी का संदर्भ लें:
तुम बस 'noncopyable' से विरासत सकता है: http: //www.boost.org/doc/libs/1_55_0/libs/utility/utility.htm#Class_noncopyable – EdChum
वी.एस. के लिए आप को सक्रिय कर सकता है" चेतावनी-जैसे- त्रुटियां " –
@ मार्कोए। क्या यह एक चेतावनी है? किस संस्करण में और किस चेतावनी स्तर पर? – Felics