最終更新日時: 2025年07月09日 00時33分39秒 (JST)
Akira Takahashi が更新

履歴 編集

class template
<functional>

# std::equal_to

    namespace std {
      // C++03
      template <typename T>
      struct equal_to {
        bool operator ()(const T& x, const T& y) const;
        using first_argument_type  = T;
        using second_argument_type = T;
        using result_type          = bool;
      };

      // C++14
      template <class T = void>
      struct equal_to {
        constexpr bool operator()(const T& x, const T& y) const;
        using first_argument_type  = T;
        using second_argument_type = T;
        using result_type          = bool;
      };

      template <>
      struct equal_to<void> {
        template <class T, class U> auto operator()(T&& t, U&& u) const
          -> decltype(std::forward<T>(t) == std::forward<U>(u));
        using is_transparent = unspecified;
      };

      // C++20
      template <class T = void>
      struct equal_to {
        constexpr bool operator()(const T& x, const T& y) const;
      };

      template <>
      struct equal_to<void> {
        template <class T, class U> auto operator()(T&& t, U&& u) const
          -> decltype(std::forward<T>(t) == std::forward<U>(u));
        using is_transparent = unspecified;
      };
    }

## 概要

`equal_to`クラスは、等値比較を行う関数オブジェクトである。

この関数オブジェクトは一切のメンバ変数を持たず、状態を保持しない。

## メンバ関数

名前 | 説明
--- | ---
`operator ()` | `x == y` と等価

## メンバ型

名前 | 説明
--- | ---
`first_argument_type` | `operator()` の最初の引数の型。`T` と等価（`T` が `void` 以外の場合のみ）
`second_argument_type` | `operator()` の２番目の引数の型。`T` と等価（`T` が `void` 以外の場合のみ）
`result_type` | `operator()` の戻り値の型。`bool` と等価（`T` が `void` 以外の場合のみ）
`is_transparent` | `operator()` が関数テンプレートである事を示すタグ型。 実装依存の型であるがあくまでタグ型であり、型そのものには意味はない。（`T` が `void` の場合のみ）

## 例

    #include <iostream>
    #include <functional>

    int main()
    {
      std::cout << std::boolalpha << std::equal_to<int>()(3, 3) << std::endl;
    }

### 出力

    true

## 参照

- N3421 Making Operator Functors greater<>
- N3657 Adding heterogeneous comparison lookup to associative containers (rev 4)
- N3789 Constexpr Library Additions: functional
- P0005R4 Adopt `not_fn` from Library Fundamentals 2 for C++17
- P0619R4 Reviewing deprecated facilities of C++17 for C++20