C ++ 11 ile bir projede çalışıyorum ve aşağıdaki kodu denedim
#include <atomic>
struct A {
std::atomic_int idx = 1;
};
int main() {
return 0;
}
Derleyici hatası alıyorum
error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]'
std::atomic_int idx = 1;
^
Aynı sonuç C ++ 14 ile aynıdır. C ++ 17'ye geçiş yaptığımda çalışır: wandbox
Cppreference'yi farklılıklar açısından kontrol ettim:
Ancak C ++ 14 ve C ++ 17 arasında belgelenmiş bir fark yoktur. Neden C ++ 14 ile değil C ++ 17 ile çalışıyor?
main
(veya herhangi bir işlev, olması gerekmez main
) ile basitleştirebilirsiniz . Clang benzer bir hata mesajı veriyor , başlatıcı veya düz kurucu yerine silinmiş bir kopya kurucu kullanmaya çalışıyor : libbol ++ ile godbolt.org/z/SBGf9w