Make util::hash_combine and hash_sequence constexpr
This commit is contained in:
parent
9f36dfc0e4
commit
8a7891d561
1 changed files with 3 additions and 3 deletions
|
|
@ -6,9 +6,9 @@
|
||||||
namespace psemek::util
|
namespace psemek::util
|
||||||
{
|
{
|
||||||
|
|
||||||
inline void hash_combine(std::size_t & seed, std::size_t value)
|
constexpr void hash_combine(std::size_t & seed, std::size_t value)
|
||||||
{
|
{
|
||||||
static const std::size_t k = 0x9ddfea08eb382d69ULL;
|
constexpr std::size_t k = 0x9ddfea08eb382d69ULL;
|
||||||
std::size_t a = (value ^ seed) * k;
|
std::size_t a = (value ^ seed) * k;
|
||||||
a ^= (a >> 47);
|
a ^= (a >> 47);
|
||||||
std::size_t b = (seed ^ a) * k;
|
std::size_t b = (seed ^ a) * k;
|
||||||
|
|
@ -17,7 +17,7 @@ namespace psemek::util
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Iterator, typename Hash = std::hash<std::decay_t<decltype(*std::declval<Iterator>())>>>
|
template <typename Iterator, typename Hash = std::hash<std::decay_t<decltype(*std::declval<Iterator>())>>>
|
||||||
void hash_sequence(std::size_t & seed, Iterator begin, Iterator end, Hash hash = Hash{})
|
constexpr void hash_sequence(std::size_t & seed, Iterator begin, Iterator end, Hash hash = Hash{})
|
||||||
{
|
{
|
||||||
for (; begin != end; ++begin)
|
for (; begin != end; ++begin)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue