Как поменять две std :: атомные переменные? [дублировать]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как поменять две std :: атомные переменные? [дублировать]

Сообщение Anonymous »

У меня есть две переменные std :: atomic < /code>, например,: < /p>

Код: Выделить всё

std::atomic b1;
std::atomic b2;
< /code>

В какой -то момент в коде мне нужно их поменять.  Это работает до создания потоков, поэтому я знаю, что есть только основной поток, и никто другой не пытается читать/написать в эти VAR.  Но: < /p>

std::swap(b1, b2);
< /code>

Это приводит к: < /p>

[...] MSVC\14.24.28314\include\utility(61,1): error C2280: 'std::atomic::atomic(const std::atomic &)': attempting to reference a deleted function
[...] MSVC\14.24.28314\include\atomic(1480): message : see declaration of 'std::atomic::atomic'
[...] MSVC\14.24.28314\include\atomic(1480,5): message : 'std::atomic::atomic(const std::atomic &)': function was explicitly deleted
< /code>

Я не уверен, почему конструктор копирования удален.  Таким образом, решением, которое я использовал, заключалось в том, чтобы использовать солон старого стиля с 3-й переменной: < /p>

const bool tmp = b1;
b1 = b2.load();
b2 = tmp;
Но теперь мне любопытно: почему конструктор копирования std :: atomic удален?>

Подробнее здесь: https://stackoverflow.com/questions/605 ... -variables
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»