Sto lavorando a un progetto con C ++ 11 e ho provato a seguire il codice
#include <atomic>
struct A {
std::atomic_int idx = 1;
};
int main() {
return 0;
}
Ottengo l'errore del compilatore
error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]'
std::atomic_int idx = 1;
^
Lo stesso risultato è con C ++ 14. Quando passo a C ++ 17 funziona: wandbox
Ho controllato cppreference per le differenze:
Ma non c'è alcuna differenza documentata tra C ++ 14 e C ++ 17. Perché funziona con C ++ 17 e non con C ++ 14?
main
(o in qualsiasi funzione, non è necessario che sia main
), anziché un costruttore di strutture. Clang dà un messaggio di errore simile, essendo più esplicito che sta cercando di usare un costruttore di copia cancellato invece di inizializzatore o costruttore semplice: godbolt.org/z/SBGf9w con libc ++