Je travaille dans un projet avec C ++ 11 et j'ai essayé de suivre le code
#include <atomic>
struct A {
std::atomic_int idx = 1;
};
int main() {
return 0;
}
J'obtiens l'erreur du compilateur
error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]'
std::atomic_int idx = 1;
^
Le même résultat est avec C ++ 14. Quand je passe en C ++ 17 ça marche: wandbox
J'ai vérifié cppreference pour les différences:
Mais il n'y a aucune différence documentée entre C ++ 14 et C ++ 17. Pourquoi ça marche avec C ++ 17 et pas avec C ++ 14?
main
(ou n'importe quelle fonction, pas besoin qu'il soit main
), au lieu d'un constructeur struct. Clang donne un message d'erreur similaire, étant plus explicite qu'il essaie d'utiliser un constructeur de copie supprimé au lieu d'un initialiseur ou d'un constructeur simple: godbolt.org/z/SBGf9w avec libc ++