C++1z shared_ptr::weak_type

C++1zから、shared_ptrの入れ子型としてweak_typeが追加されます。

これは、shared_ptr<T>に対するweak_ptr<T>型の別名です。

shared_ptrの要素型を取り出してweak_ptrのテンプレート引数を埋めることが冗長なコードになっていたための対処です。

shared_ptr<T> sptr = …;

// shared_ptrをweak_ptrに変換してラムダ式に渡す
auto f = [wptr = typename decltype(sptr)::weak_type(sptr)] {
  // この関数が呼ばれたときには、wptrが指す先のオブジェクトが死んでいる可能性がある
  if (wptr.lock()) {
    …
  }
}

参照

お断り

この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。