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 ++