通过atomic :: load()访问向量时访问冲突

时间:2014-02-07 03:59:03

标签: c++ vector atomic

此代码:

#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.

1 个答案:

答案 0 :(得分:2)

您违反了规则。 29.5 / 1说:

  

有一个通用的类模板atomic<T>。模板参数T的类型应该是可复制的(3.9)。 [注意:不能静态初始化的类型参数可能难以使用。 - 结束记录]

班级foo绝对不是一件容易复制的。