概要
std::hashクラスの、std::monostateに対する特殊化。
この特殊化は有効化されているため、std::monostateをstd::unordered_setやstd::unordered_mapのキーとして使用できる。
効果
std::monostateオブジェクトは唯一の状態のみを持ち、常に等値であるため、ハッシュ値も常に同じ値となる。その値は未規定である。
備考
例
#include <cassert>
#include <functional>
#include <variant>
int main()
{
std::monostate a{};
std::monostate b{};
// 常に同じハッシュ値となる
assert(std::hash<std::monostate>{}(a) == std::hash<std::monostate>{}(b));
}
出力
バージョン
言語
- C++17
処理系
- Clang: 5.0.0 ✅
- GCC: 7.1 ✅
- Visual C++: 2017 Update 7 ✅
関連項目
参照
- P0088R3 Variant: a type-safe union for C++17 (v8)
- P0472R3 Put
std::monostatein<utility>- C++26で、この特殊化が
<utility>ヘッダでも使用できるようになった
- C++26で、この特殊化が