template <class... Args> constexpr std::size_t hash_combine(const Args&... args) noexcept(see below);
std::size_t seed{0}; return (..., (seed ^= std::hash<Args>{}(args) + (seed << 6) + (seed >> 2)));
(noexcept(std::hash<Args>{}(args)) && ...)