msvs 2013中的std :: shared_ptr是compare_exchange_weak吗?

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构建

Igo*_*nik 7

您的程序显示未定义的行为.

29.5/1有一个通用的类模板atomic<T>.模板参数的类型T应该是可以轻易复制的(3.9).

shared_ptr<int> 不是轻易复制的.