Совокупная инициализация и конструктор удаленных копий, также как не копируемые объекты как поля - PullRequest
1 голос
/ 27 января 2020

Есть ли способ инициализации ниже вектора?

struct Test {
std::atomic_bool is_enabled;
int age;};

int main()
{
    std::vector<Test> tests{
        Test{false, 42},
        Test{true, 77}
    };
}

Самый очевидный (по крайней мере для меня) способ не работает. Проблема в конструкторе удаленных копий std :: atomic_bool is_enabled, и я понятия не имею, что делать. :)

1 Ответ

3 голосов
/ 27 января 2020

Вы можете реализовать конструктор копирования для вашего типа Test. Вы просто не можете полагаться на конструкцию копирования для атомарности или, как следствие, на автоматически сгенерированный конструктор копирования Test.

. Будьте осторожны: то, что вы делаете, кажется хрупким. Почему вы думаете, что один член должен быть атомом c, а другие нет? Кто защищает сам вектор?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...