我有一个类似下面的课程.
#include <atomic>
static const long myValue = 0;
class Sequence
{
public:
Sequence(long initial_value = myValue) : value_(initial_value) {}
private:
std::atomic<long> value_;
};
int main()
{
Sequence firstSequence;
Sequence secondSequence = firstSequence;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到这样的编译错误,
test.cpp:21:36: error: use of deleted function ‘Sequence::Sequence(const Sequence&)’
test.cpp:5:7: error: ‘Sequence::Sequence(const Sequence&)’ is implicitly deleted because the default definition would be ill-formed:
test.cpp:5:7: error: use of deleted function ‘std::atomic<long int>::atomic(const std::atomic<long int>&)’
Run Code Online (Sandbox Code Playgroud)
这是默认的复制构造函数,赋值opertaor在这种情况下不起作用吗?
PS:我使用的是gcc 4.6.3版
array< atomic_size_t, 10 > A;
Run Code Online (Sandbox Code Playgroud)
无论是atomic_init(A,{0})也A = {ATOMIC_VAR_INIT(0)}似乎工作,返回一个难以理解的错误.你如何将一个原子数组初始化为0?
即使是循环,在每一步更新数组的一个元素也不起作用.如果我们不能初始化原子数组的目的是什么?
我还想补充一点,我的数组的实际大小是巨大的(在示例中不是10),所以我需要直接初始化.