通过阅读 c++11 草案n3242的第 20.7.2.5 节,看起来我们对 shared_ptr 进行了原子操作,这使我们能够对复杂结构进行无锁操作,而无需担心 GC/内存泄漏。
但是,我无法在 GCC-4.7.0 中成功使用它。我只是测试了以下程序
#include <atomic>
#include <memory>
#include <string>
struct X {
int x;
double y;
std::string s;
};
int main() {
std::shared_ptr<X> x(new X);
auto p = std::atomic_load(&x);
}
它有编译器错误:
c.cpp:13:33: error: no matching function for call to ‘atomic_load(std::shared_ptr<X>*)’
有谁知道我在这里错过了什么?还是只是 gcc 还没有实现呢?