23 lines
532 B
C++
23 lines
532 B
C++
|
#pragma once
|
||
|
|
||
|
#include "../hash.hpp"
|
||
|
|
||
|
#include <utility>
|
||
|
|
||
|
|
||
|
namespace cruft::hash {
|
||
|
/// A std compatible adapter for a variadic 'mix' hash.
|
||
|
///
|
||
|
/// It combines multiple values in a way that is unlikely to result in collisions.
|
||
|
///
|
||
|
/// The exact implementation is not defined.
|
||
|
struct mixer {
|
||
|
template <typename ...ValueT>
|
||
|
auto operator () (ValueT &&...elements)
|
||
|
{
|
||
|
return cruft::hash::mix (
|
||
|
std::forward<ValueT> (elements)...
|
||
|
);
|
||
|
}
|
||
|
};
|
||
|
}
|