sli*_*ser 3 c++ atomic visual-c++ c++11 visual-studio-2013
请看样品
std::atomic < std::shared_ptr < int > > a;
std::shared_ptr < int > b;
std::shared_ptr < int > c = std::make_shared < int > (10);
while(a.compare_exchange_weak(b, c));
assert(a.load() == c);
assert(a.load().use_count() == 2); // <- assertion is failed.
Run Code Online (Sandbox Code Playgroud)
你怎么看?是编译器错误吗?
在win32模式下使用msvs 2013构建
您的程序显示未定义的行为.
29.5/1有一个通用的类模板
atomic<T>.模板参数的类型T应该是可以轻易复制的(3.9).
shared_ptr<int> 不是轻易复制的.