11USERVER_NAMESPACE_BEGIN
 
   16struct HashSeed 
final {
 
   24  using is_transparent [[maybe_unused]] = 
void;
 
   33  std::size_t operator()(std::string_view s) 
const& 
noexcept;
 
   35  template <
class StringStrongTypedef>
 
   36  auto operator()(
const StringStrongTypedef& s) 
const& 
noexcept 
   37      -> 
decltype(operator()(std::string_view{s.GetUnderlying()})) {
 
   38    static_assert(
noexcept((*
this)(std::string_view{s.GetUnderlying()})),
 
   39                  "GetUnderlying() should not throw as this affects efficiency " 
   42    return (*
this)(std::string_view{s.GetUnderlying()});
 
   45  HashSeed GetSeed() 
const noexcept { 
return seed_; }
 
   54  using is_transparent [[maybe_unused]] = 
void;
 
   63  std::size_t operator()(std::string_view s) 
const& 
noexcept;
 
   75  int operator()(std::string_view lhs, std::string_view rhs) 
const noexcept;
 
   81  using is_transparent [[maybe_unused]] = 
void;
 
   83  bool operator()(std::string_view lhs, std::string_view rhs) 
const noexcept;
 
   89  using is_transparent [[maybe_unused]] = 
void;
 
   91  bool operator()(std::string_view lhs, std::string_view rhs) 
const noexcept;