接口的shared_ptr的atomic_store

时间:2017-05-29 15:49:41

标签: c++11 shared-ptr atomic

我试图以原子方式设置shared_ptr的值:

shared_ptr<Base> a = std::make_shared<Derived>();
....
shared_ptr<Base> b;
std::atomic_store(&b,a); // Error here

我收到错误消息“'std :: shared_ptr&lt; Base&gt;'不是来自'volatile std :: atomic&lt; _ITp&gt;'“

如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:3)

std :: shared_ptr有一个atomic_store专门化,见

http://en.cppreference.com/w/cpp/memory/shared_ptr/atomic

通过现代编译器(例如,GCC 5),您提供的代码编译得很好。所以我想你编译器并不完全支持C ++ 11(就像GCC 4.x那样缺乏专业化)。