接口 shared_ptr atomic_store
atomic_store of shared_ptr of interface
我正在尝试以原子方式设置 shared_ptr 的值:
shared_ptr<Base> a = std::make_shared<Derived>();
....
shared_ptr<Base> b;
std::atomic_store(&b,a); // Error here
我收到错误消息“'std::shared_ptr< Base >' 不是从 'volatile std::atomic<_ITp>' 派生的”
如何解决这个问题?谢谢
std::shared_ptr 有一个 atomic_store 的专业化,请参阅
http://en.cppreference.com/w/cpp/memory/shared_ptr/atomic
并且通过现代编译器(比如 GCC 5),您提供的代码编译得很好。所以我想你的编译器不完全支持 C++11(就像 GCC 4.x,缺乏专业化)。
我正在尝试以原子方式设置 shared_ptr 的值:
shared_ptr<Base> a = std::make_shared<Derived>();
....
shared_ptr<Base> b;
std::atomic_store(&b,a); // Error here
我收到错误消息“'std::shared_ptr< Base >' 不是从 'volatile std::atomic<_ITp>' 派生的”
如何解决这个问题?谢谢
std::shared_ptr 有一个 atomic_store 的专业化,请参阅
http://en.cppreference.com/w/cpp/memory/shared_ptr/atomic
并且通过现代编译器(比如 GCC 5),您提供的代码编译得很好。所以我想你的编译器不完全支持 C++11(就像 GCC 4.x,缺乏专业化)。