में 'डिफ़ॉल्ट' कीवर्ड को संभालने में संभावित बग VS2015 C++ कंपाइलर का परीक्षण करते समय मैंने default
कीवर्ड के साथ एक अजीब बग पर ठोकर खाई। अगर मैं कार्य करें:वीएस2015 सी ++
struct Dummy
{
Dummy() = default;
Dummy(const Dummy &) = delete;
};
int main()
{
const Dummy& ref = Dummy();
return 0;
}
मैं
त्रुटि C2280: 'डमी :: डमी (स्थिरांक डमी &)': किसी हटाए समारोह
टिप्पणी को संदर्भित करने का प्रयास कर रहा: 'डमी की घोषणा देखें: : डमी '
लेकिन अगर मैं एक खाली निर्माता का उपयोग
struct Dummy
{
Dummy() {}
Dummy(const Dummy &) = delete;
};
int main()
{
const Dummy& ref = Dummy();
return 0;
}
कोड संकलित करता है। g++ या clang के साथ पहला उदाहरण चलाना कोई त्रुटि नहीं उत्पन्न करता है।
वीएस2015 के साथ डिफ़ॉल्ट कन्स्ट्रक्टर का उपयोग क्यों कॉपी कन्स्ट्रक्टर का उपयोग करने का प्रयास करेगा जहां यह g ++ या clang में नहीं है?
आप 'कॉन्स डमी एंड आर 2 {डमी()} से क्या प्राप्त करते हैं; '? –
संबंधित: [स्पष्ट रूप से हटाए गए प्रतिलिपि/चालक कन्स्ट्रक्टर बनाम elision को कॉपी/स्थानांतरित करें] (http: // stackoverflow।कॉम/प्रश्न/20589622) –
कृपया यह http://stackoverflow.com/questions/31264984/c-compiler-error-c2280-attempting-to-reference-a-deleted-function-in-visual –