我最近升级到了兼容 C++11 的编译器,我试图将一些代码从 boost 更新到 c++11 标准。使用 atomic_store over 转换一些代码时遇到了问题。这是一些简单的测试代码,似乎给我抛出了编译器错误。
int main()
{
std::shared_ptr<int> m = std::make_shared<int>();
*m = 1;
std::shared_ptr<int> a = std::make_shared<int>();
*a = 2;
std::atomic_store(&m,std::move(a));
std::cout << *m << std::endl;
}
该std::atomic_store(&m,std::move(a));
行为我引发了编译器错误:
'std::shared_ptr<int>' is not derived from 'volatile std::atomic<_ITp>'
std::atomic_store(&m,std::move(a));
^
从 boost 迁移到 C++11 时 atomic_store 的方式是否发生了变化?我现在需要创建共享指针的原子对象吗?