【发布时间】:2015-02-03 12:58:01
【问题描述】:
我想使用std::atomic_int 变量。在我的代码中,我有:
#include <atomic>
std::atomic_int stop = 0;
int main()
{
// Do something
}
这给了我一个编译错误:
use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]'
std::atomic_int stop = 0;
^
知道发生了什么吗?
【问题讨论】:
-
肯定 boost/thread.hpp 在这里无关紧要吗?删除标头后问题是否仍然存在?
-
是的,它与 boost 无关……不知道为什么我把它包括在内!即使删除标题后问题仍然存在。
-
显然编译器认为你正在做
std::atomic_int stop = std::atomic_int(0);,并且由于复制构造函数被删除,这将不起作用。而是尝试直接初始化,例如std::atomic_int stop{0};。 -
复制初始化需要一个可访问的复制构造函数
-
@JoachimPileborg:是的,我总是忘记这条规则。标准版现已在下方提供。