Saya sedang mengerjakan proyek dengan C ++ 11 dan saya mencoba kode berikut
#include <atomic>
struct A {
std::atomic_int idx = 1;
};
int main() {
return 0;
}
Saya mendapatkan kesalahan kompilator
error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]'
std::atomic_int idx = 1;
^
Hasil yang sama adalah dengan C ++ 14. Ketika saya beralih ke C ++ 17 berfungsi: wandbox
Saya memeriksa perbedaan preferensi:
Tetapi tidak ada perbedaan yang didokumentasikan antara C ++ 14 dan C ++ 17. Mengapa ini bekerja dengan C ++ 17 dan tidak dengan C ++ 14?
main
(atau fungsi apa pun, tidak perlu menjadi main
), bukan konstruktor struct. Dentang memberikan pesan kesalahan yang sama, menjadi lebih eksplisit bahwa itu mencoba menggunakan konstruktor salinan dihapus daripada inisialisasi atau konstruktor polos: godbolt.org/z/SBGf9w dengan libc ++