Я работаю в проекте с 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 ++