Я работаю в проекте с C ++ 11, и я попробовал следующий код
#include <atomic>
struct A {
std::atomic_int idx = 1;
};
int main() {
return 0;
}
Я получаю ошибку компилятора
error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]'
std::atomic_int idx = 1;
^
Тот же результат с C ++ 14. Когда я переключаюсь на C ++ 17, это работает: wandbox
Я проверил cppreference на различия:
Но нет никакой разницы, документированной между C ++ 14 и C ++ 17. Почему он работает с C ++ 17, а не с C ++ 14?
main(или любой другой функции, которая не требуется main) вместо конструктора структуры. Clang выдает похожее сообщение об ошибке, будучи более явным, что он пытается использовать конструктор удаленной копии вместо инициализатора или простого конструктора: godbolt.org/z/SBGf9w с libc ++