Estoy trabajando en un proyecto con C ++ 11 e intenté seguir el código
#include <atomic>
struct A {
std::atomic_int idx = 1;
};
int main() {
return 0;
}
Me sale el error del compilador
error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]'
std::atomic_int idx = 1;
^
El mismo resultado es con C ++ 14. Cuando cambio a C ++ 17 funciona: wandbox
Revisé cppreference por diferencias:
Pero no hay diferencia documentada entre C ++ 14 y C ++ 17. ¿Por qué funciona con C ++ 17 y no con C ++ 14?
main
(o cualquier función, no es necesario que sea main
), en lugar de un constructor de estructura. Clang da un mensaje de error similar, siendo más explícito que está tratando de usar un constructor de copia eliminado en lugar de un inicializador o un constructor simple: godbolt.org/z/SBGf9w con libc ++