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 удален?>
У меня есть две переменные std :: atomic < /code>, например,: < /p>
[code]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>