GCC <= 4.9 的 std::atomic_store(shared_ptr) 替代方案?

alternative to std::atomic_store(shared_ptr) for GCC <= 4.9?

我尝试了类似 this 问题中描述的方法:

// create copy
auto new_data(std::make_shared<some_class>(*this->data));

... // modify *new_data

// apply new data
std::atomic_store(&this->data, new_data);

.. 后来我意识到在其他安装了 gcc 4.8 的机器上它不会工作(就像在同一个问题中描述的那样)。

是否有解决方法 - 例如(暂时)从 std::shared_ptr 派生提供所需的接口或仅使用另一个原子操作?

或者当我在全局指针中存储一个新对象时,我提供外部互斥锁来保护读取访问吗?

如果可以选择 Boost,当然可以只使用 boost::shared_ptrboost::atomic_store 而不是 STL。接口相同,更换方便。