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

履歴 編集

function template
<memory>

std::operator<=>(C++20)

namespace std {
  template <class T, class U>
  strong_ordering
    operator<=>(const shared_ptr<T>& a,
                const shared_ptr<U>& b) noexcept; // (1) C++20

  template <class T>
  strong_ordering
    operator<=>(const shared_ptr<T>& x,
                nullptr_t) noexcept;              // (2) C++20
}

概要

shared_ptrオブジェクトの三方比較を行う。

戻り値

備考

  • この演算子により、以下の演算子が使用可能になる (C++20):
    • operator<
    • operator<=
    • operator>
    • operator>=

#include <iostream>
#include <memory>

int main()
{
  std::shared_ptr<int> p1(new int(3));
  std::shared_ptr<int> p2 = p1;
  if ((p1 <=> p2) == 0) {
    std::cout << "equal" << std::endl;
  }

  std::shared_ptr<int> p3;
  if ((p3 <=> nullptr) == 0) {
    std::cout << "p3 is nullptr" << std::endl;
  }

  if ((nullptr <=> p3) == 0) {
    std::cout << "p3 is nullptr" << std::endl;
  }
}

出力

equal
p3 is nullptr
p3 is nullptr

バージョン

言語

  • C++20

処理系

参照