GeezerVison is showing cpprefjp.github.io — std::operator== - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月11日 13時06分31秒 (JST)
Akira Takahashi
が更新
履歴
編集
function template
<optional>
std:: operator== (C++17)
namespace std {
template < class T , class U >
constexpr bool operator == ( const optional < T >& x , const optional < U >& y ); // (1) C++17
template < class T >
constexpr bool operator == ( const optional < T >& x , nullopt_t ) noexcept ; // (2) C++17
template < class T , class U >
constexpr bool operator == ( const optional < T >& x , const U & y ); // (3) C++17
template < class T , class U >
constexpr bool operator == ( const T & x , const optional < U >& y ); // (4) C++17
// (2) により、以下のオーバーロードが使用可能になる (C++20)
template < class T >
constexpr bool operator == ( nullopt_t , const optional < T >& y ) noexcept ; // (5) C++17
}
概要
optionalオブジェクトの等値比較を行う。
テンプレートパラメータ制約
(1), (3), (4) : 型Tが==で比較可能であり、その戻り値型がboolに変換可能であること
(3), (4) : 比較する相手の型がoptionalの特殊化でないこと
戻り値
(1) : xとyがどちらも有効値を持っていれば、有効値同士を等値比較した結果を返す。xとyがどちらも有効値を持っていなければtrueを返す。xとyのうち、どちらかが有効値を持ち、どちらかが持たない場合はfalseを返す
(2) : xが有効値を持っていなければtrue、そうでなければfalseを返す
(3) : xが有効値を持っていれば、yと等値比較した結果を返す。そうでなければfalseを返す
(4) : yが有効値を持っていれば、xと等値比較した結果を返す。そうでなければfalseを返す
(5) : yが有効値を持っていなければtrue、そうでなければfalseを返す
備考
(2) : この演算子により、以下の演算子が使用可能になる (C++20):
bool operator==(const nullopt_t&, const optional<T>&) noexcept;
bool operator!=(const optional<T>&, const nullopt_t&) noexcept;
bool operator!=(const nullopt_t&, const optional<T>&) noexcept;
例
出力
バージョン
言語
処理系
参照