http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57250
Bug ID: 57250 Summary: [C++11] std::shared_ptr misses atomic_* support Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: daniel.kruegler at googlemail dot com Consider this as a reminder bug entry to provide the atomic_* overloads for std::shared_ptr. A minimal test case could be: #include <memory> int main() { const std::shared_ptr<int> p; bool is_lock_free = std::atomic_is_lock_free(&p); std::shared_ptr<int> p2 = std::atomic_load(&p); std::shared_ptr<int> p3 = std::atomic_load_explicit(&p, std::memory_order_seq_cst); std::atomic_store(&p2, p); std::atomic_store_explicit(&p2, p, std::memory_order_seq_cst); std::shared_ptr<int> p4 = std::atomic_exchange(&p2, p); p4 = std::atomic_exchange_explicit(&p2, p, std::memory_order_seq_cst); bool chk = std::atomic_compare_exchange_weak(&p2, &p3, p); chk = std::atomic_compare_exchange_strong(&p2, &p3, p); chk = std::atomic_compare_exchange_weak_explicit(&p2, &p3, p, std::memory_order_seq_cst, std::memory_order_seq_cst); chk = std::atomic_compare_exchange_strong_explicit(&p2, &p3, p, std::memory_order_seq_cst, std::memory_order_seq_cst); }