Я немного запутался в следующем коде:
struct A {
std::atomic<int> a = 0;
};
Что дает сообщение об ошибке:
копирование субобъекта элемента типа 'std:: atomic' вызывает удаленный конструктор
Но почти тот же код работает:
struct A {
std::atomic<int> a = {0};
};
Okey, если для первого варианта требуется конструктор копирования, тогда он должен использовать operator=()
. Но ждать! Этот оператор отлично работает без конструктора копирования:
A a;
a.a = 1;
Может ли кто-нибудь объяснить, как обе инициализации на месте расширяются с точки зрения простых операций? Почему первый требует конструктора копирования?