diff --git a/include/ircd/util.h b/include/ircd/util.h index cc365c69e..2bf621dc7 100644 --- a/include/ircd/util.h +++ b/include/ircd/util.h @@ -286,6 +286,20 @@ hash(const std::string &str, return i >= str.size()? 7681ULL : (hash(str, i+1) * 33ULL) ^ str.at(i); } +constexpr size_t +hash(const char16_t *const &str, + const size_t i = 0) +{ + return !str[i]? 7681ULL : (hash(str, i+1) * 33ULL) ^ str[i]; +} + +inline size_t +hash(const std::u16string &str, + const size_t i = 0) +{ + return i >= str.size()? 7681ULL : (hash(str, i+1) * 33ULL) ^ str.at(i); +} + /*** * C++14 user defined literals