Skip to content

Latest commit

 

History

History
78 lines (58 loc) · 2 KB

File metadata and controls

78 lines (58 loc) · 2 KB

unique

  • memory[meta header]
  • std[meta namespace]
  • shared_ptr[meta class]
  • function[meta id-type]
  • cpp11[meta cpp]
  • cpp17deprecated[meta cpp]
  • cpp20removed[meta cpp]
bool unique() const noexcept;

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

概要

有効なリソースを所有しているかを判定する。

戻り値

use_count() == 1
  • get()[link get.md]

備考

この関数は、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()[color ff0000]

出力

unique
non unique

バージョン

言語

  • C++11

処理系

参照