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

Reply via email to