スマートポインタのアトミック型を許可する提案

N4058 Atomic Smart Pointers

std::atomic<T>クラスはC++11(とC++14)現在、memcpy可能な型しか入れられないのですが、以下の特殊化を追加し、スマートポインタを入れられるようにしようという提案。

  • atomic<shared_ptr<T>>
  • atomic<weak_ptr<T>>
  • atomic<unique_ptr<T>>

これができないと、アトミック型にユーザー定義型を入れようとしたときに、atomic<T*>にして生ポインタのnewdeleteを自分で書かないといけないので、事故が起きやすいという問題がありました。

関連