最終更新日時(UTC):
が更新

履歴 編集

function
<memory>

std::shared_ptr::unique(C++11)(C++17で非推奨)(C++20で削除)

bool unique() const noexcept;

この関数は、C++17から非推奨となり、C++20で削除された。代わりにuse_count()関数を使用すること。

概要

同じ所有権を共有する他のユーザーが存在しないかを判定する。

戻り値

備考

この関数は、use_count()を使用するよりも高速である可能性がある。

非推奨・削除の詳細

所有権を持つユーザー数を複数スレッドの状況で取得した場合、その値は参考程度にしかならない。そのため、use_count()は参考値として使用できるが、この関数は厳密な値を要求してしまう。そのために、複数スレッドで危険なこの関数は非推奨とし、use_count()を推奨する。

#include <iostream>
#include <memory>

int main()
{
  std::shared_ptr<int> p(new int(3));

  // 所有権を持つユーザーが1人
  if (p.unique()) {
    std::cout << "unique" << std::endl;
  }

  // 所有権を持つユーザーが2人
  std::shared_ptr<int> q = p;
  if (!p.unique()) {
    std::cout << "non unique" << std::endl;
  }
}

出力

unique
non unique

バージョン

言語

  • C++11

処理系

参照