15 lines
458 B
C++
15 lines
458 B
C++
// SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <stenzek@gmail.com>
|
|
// SPDX-License-Identifier: CC-BY-NC-ND-4.0
|
|
|
|
#pragma once
|
|
|
|
#include <functional>
|
|
|
|
// https://stackoverflow.com/questions/2590677/how-do-i-combine-hash-values-in-c0x
|
|
template<typename T, typename... Rest>
|
|
void hash_combine(std::size_t& seed, const T& v, const Rest&... rest)
|
|
{
|
|
seed ^= std::hash<T>{}(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
|
|
(hash_combine(seed, rest), ...);
|
|
}
|