1// SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <[email protected]> 2// SPDX-License-Identifier: CC-BY-NC-ND-4.0 3 4#pragma once 5 6#include <functional> 7 8// https://stackoverflow.com/questions/2590677/how-do-i-combine-hash-values-in-c0x 9template<typename T, typename... Rest> 10void hash_combine(std::size_t& seed, const T& v, const Rest&... rest) 11{ 12 seed ^= std::hash<T>{}(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); 13 (hash_combine(seed, rest), ...); 14} 15 16