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がまだそれを実装していないだけですか?