https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117686
Bug ID: 117686 Summary: [15 Regression] error in unordered_set::emplace Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Target Milestone: --- #include <unordered_set> #include <utility> struct desc { }; bool operator==(desc, desc) { return true; } using P = std::pair<desc, desc>; template<> struct std::hash<P> { size_t operator()(const P&) const { return 0; } }; int main() { const desc d; std::unordered_set<P> s; s.emplace(desc{}, desc{}); } bits/hashtable.h:2282:40: error: cannot convert 'const std::pair<const desc&, const desc&>*' to 'const std::_Hashtable<std::pair<desc, desc>, std::pair<desc, desc>, std::allocator<std::pair<desc, desc> >, std::__detail::_Identity, std::equal_to<std::pair<desc, desc> >, std::hash<std::pair<desc, desc> >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, true, true> >::key_type*' {aka 'const std::pair<desc, desc>*'} in assignment