Ich arbeite in einem Projekt mit C ++ 11 und habe versucht, folgenden Code zu verwenden
#include <atomic>
struct A {
std::atomic_int idx = 1;
};
int main() {
return 0;
}
Ich bekomme den Compilerfehler
error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]'
std::atomic_int idx = 1;
^
Das gleiche Ergebnis ist mit C ++ 14. Wenn ich zu C ++ 17 wechsle, funktioniert es: wandbox
Ich habe cppreference auf Unterschiede überprüft:
Es ist jedoch kein Unterschied zwischen C ++ 14 und C ++ 17 dokumentiert. Warum funktioniert es mit C ++ 17 und nicht mit C ++ 14?
main(oder eine beliebige Funktion, die nicht erforderlich ist) vereinfachen main. Clang gibt eine ähnliche Fehlermeldung aus, da expliziter versucht wird, einen gelöschten Kopierkonstruktor anstelle des Initialisierers oder einfachen Konstruktors zu verwenden: godbolt.org/z/SBGf9w mit libc ++