Estou trabalhando em um projeto com C ++ 11 e tentei seguir o código
#include <atomic>
struct A {
std::atomic_int idx = 1;
};
int main() {
return 0;
}
Eu recebo o erro do 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;
^
O mesmo resultado é com o C ++ 14. Quando eu mudo para o C ++ 17, ele funciona: mudo wandbox
Eu verifiquei cppreference por diferenças:
Mas não há diferença documentada entre C ++ 14 e C ++ 17. Por que funciona com o C ++ 17 e não com o C ++ 14?
main
(ou qualquer função, não precisa ser main
), em vez de um construtor struct. Clang dá uma mensagem de erro semelhante, sendo mais explícito que ele está tentando usar um apagado cópia construtor em vez de initializer ou construtor simples: godbolt.org/z/SBGf9w com libc ++