I noticed that lines 50 to 61 declare beman::hash and its specializations for cstring_view, while lines 371 to 390 define a set of specialization for std::hash. The former cannot be used because they lack definitions. Is this intentional?
|
// [cstring.view.hash], hash support |
|
template <class T> |
|
struct hash; |
|
template <> |
|
struct hash<cstring_view>; |
|
template <> |
|
struct hash<u8cstring_view>; |
|
template <> |
|
struct hash<u16cstring_view>; |
|
template <> |
|
struct hash<u32cstring_view>; |
|
template <> |
|
struct hash<wcstring_view>; |
|
template <> |
|
struct std::hash<beman::cstring_view> { |
|
auto operator()(const beman::cstring_view& sv) const noexcept { return std::hash<string_view>{}(sv); } |
|
}; |
|
template <> |
|
struct std::hash<beman::u8cstring_view> { |
|
auto operator()(const beman::u8cstring_view& sv) const noexcept { return std::hash<u8string_view>{}(sv); } |
|
}; |
|
template <> |
|
struct std::hash<beman::u16cstring_view> { |
|
auto operator()(const beman::u16cstring_view& sv) const noexcept { return std::hash<u16string_view>{}(sv); } |
|
}; |
|
template <> |
|
struct std::hash<beman::u32cstring_view> { |
|
auto operator()(const beman::u32cstring_view& sv) const noexcept { return std::hash<u32string_view>{}(sv); } |
|
}; |
|
template <> |
|
struct std::hash<beman::wcstring_view> { |
|
auto operator()(const beman::wcstring_view& sv) const noexcept { return std::hash<wstring_view>{}(sv); } |
|
}; |
I noticed that lines 50 to 61 declare beman::hash and its specializations for cstring_view, while lines 371 to 390 define a set of specialization for std::hash. The former cannot be used because they lack definitions. Is this intentional?
cstring_view/include/beman/cstring_view/cstring_view.hpp
Lines 49 to 61 in 097c505
cstring_view/include/beman/cstring_view/cstring_view.hpp
Lines 371 to 390 in 097c505