मैं C ++ 11 के साथ एक परियोजना में काम कर रहा हूं और मैंने निम्नलिखित कोड की कोशिश की
#include <atomic>
struct A {
std::atomic_int idx = 1;
};
int main() {
return 0;
}
मुझे संकलक त्रुटि मिलती है
error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]'
std::atomic_int idx = 1;
^
यही परिणाम C ++ 14 के साथ है। जब मैं C ++ 17 पर काम करता हूं तो यह काम करता है: वैंडबॉक्स
मैंने मतभेदों के लिए जाँच की:
लेकिन C ++ 14 और C ++ 17 के बीच कोई अंतर नहीं है। यह C ++ 17 के साथ क्यों काम करता है और C ++ 14 के साथ नहीं?
main
किसी main
स्ट्रक्चर कंस्ट्रक्टर के बजाय MCVE को सिर्फ एक लोकल (या किसी भी फंक्शन, इसके लिए कोई ज़रूरत नहीं ) के लिए सरल बना सकते हैं । क्लैंग एक समान त्रुटि संदेश देता है, और अधिक स्पष्ट होने के नाते कि यह इनिशियलाइज़र या सादे कंस्ट्रक्टर के बजाय एक हटाए गए कॉपी कंस्ट्रक्टर का उपयोग करने की कोशिश कर रहा है : Godbolt.org/z/SBGf9w libc ++ के साथ