此代码:
#include <iostream>
#include <vector>
#include <atomic>
struct foo{
std::vector<int> bar;
};
int main(){
std::atomic<foo> theFoo;
theFoo.load().bar.push_back(30);
return 0;
}
在拨打第12行时,给出了“访问冲突”消息的错误。我做错了什么? 我正在使用Visual Studio 2012.
答案 0 :(得分:2)
您违反了规则。 29.5 / 1说:
有一个通用的类模板
atomic<T>
。模板参数T
的类型应该是可复制的(3.9)。 [注意:不能静态初始化的类型参数可能难以使用。 - 结束记录]
班级foo
绝对不是一件容易复制的。