namespace std {
template <>
struct hash<std::filesystem::path>;
}
概要
std::hashクラスの、std::filesystem::pathに対する特殊化。パスの内容からハッシュ値を計算し、pathをunordered_mapやunordered_setのキーとして使用できるようにする。
この特殊化はC++23で追加された。それ以前は定義されておらず、hash<path>は使用できなかった。
効果
pを型pathのオブジェクトとするとき、hash<path>()(p)はhash_value(p)と同じ値を返す。
したがって、2つのパスp1とp2についてp1 == p2であれば、hash<path>()(p1) == hash<path>()(p2)となる。
例
#include <cassert>
#include <filesystem>
#include <functional>
namespace fs = std::filesystem;
int main()
{
fs::path p = "a/b/c";
// パスの内容からハッシュ値を計算する
std::size_t h = std::hash<fs::path>{}(p);
// hash_valueと同じ値になる
assert(h == fs::hash_value(p));
}
出力
バージョン
言語
- C++23
関連項目
参照
- LWG Issue 3657.
std::hash<std::filesystem::path>is not enabled- C++23で、
std::hashのpathに対する特殊化が定義された
- C++23で、