最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

function
<typeindex>

# std::type_index::hash_code(C++11)

    size_t hash_code() const;          // C++11
    size_t hash_code() const noexcept; // C++14

## 概要

型のハッシュ値を返す。

## 戻り値

`target->hash_code()`

※`target`は、`type_index`のメンバ変数として保持されている`type_info`オブジェクトへのポインタ(説明用)

## 例

    #include <iostream>
    #include <typeindex>
    #include <unordered_map>

    int main()
    {
      {
        std::type_index t1 = typeid(int);
        std::type_index t2 = typeid(double);
        std::type_index t3 = typeid(char);

        std::cout << t1.hash_code() << std::endl;
        std::cout << t2.hash_code() << std::endl;
        std::cout << t3.hash_code() << std::endl;
      }
      std::cout << std::endl;
      {
        // ハッシュ表であるunordered_mapでtype_indexをキーにできる
        std::unordered_map<std::type_index, int> m = {
          { typeid(int),    3},
          { typeid(double), 1},
          { typeid(char),   4}
        };

        std::cout << m.at(typeid(int))    << std::endl;
        std::cout << m.at(typeid(double)) << std::endl;
        std::cout << m.at(typeid(char))   << std::endl;
      }
    }

### 出力例

    3616029859
    3161387801
    3235490055

    3
    1
    4

## バージョン

### 言語

- C++11

### 処理系

- Clang: ?
- GCC: 4.6.1 ✅
- ICC: ?
- Visual C++: 2010 ✅, 2012 ✅, 2013 ✅, 2015 ✅, 2017 ✅

## 参照

- LWG Issue 2144. Missing `noexcept` specification in `type_index`