मेरा एमएसवीसी 12 संकलक ऐसा क्यों नहीं करता है?सी ++ विनाशक एक डिलीट ऑपरेटर को कॉल करता है?
त्रुटि 2 त्रुटि C2280:
#include <new>
class thing
{
public:
thing() {}
~thing() {}
static void operator delete(void* ptr) = delete;
};
int main()
{
int g;
void* p = &g;
thing* t1 = new(p) thing();
t1->~thing();
return 0;
}
त्रुटि मैं मुख्य() के समापन ब्रेस पर अजीब तरह से है '(शून्य *) शून्य बात :: ऑपरेटर को नष्ट': किसी हटाए गए समारोह को संदर्भित करने का प्रयास
यदि मैं स्पष्ट विनाशक कॉल पर टिप्पणी करता हूं, तो त्रुटि दूर हो जाती है, जिसका अर्थ यह है कि स्पष्ट विनाशक कॉल ऑपरेटर को हटाने (शून्य *) को कॉल करने का प्रयास कर रहा है। यह सहज ज्ञान नहीं देता है। जैसा कि आप शायद यहां कोड से देख सकते हैं, मैंने पहले ही अपनी याददाश्त प्रबंधित की है, और मैं नहीं चाहता कि किसी को भी चीज़ पर हटाना पड़े।
यह [compiles और works] (http://coliru.stacked-crooked.com/a/b0c0ca91f45c3887) gcc5 में, जैसा कि करना चाहिए। यदि आप रिलीज मोड में संकलित करते हैं तो क्या होता है? – vsoftco
[cpp.sh/3mqd ](http://cpp.sh/3mqd) - gcc ठीक काम करता है –
रिलीज बिल्ड में एक ही त्रुटि है। ऐसा लगता है कि यह एक कंपाइलर बग है? – Kumputer