brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · c122ca7 Raw
46 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <unordered_map>10 11// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,12//           class Alloc = allocator<pair<const Key, T>>>13// class unordered_map14 15// https://llvm.org/PR1653816// https://llvm.org/PR1654917 18#include <unordered_map>19#include <cassert>20 21#include "test_macros.h"22 23struct Key {24  template <typename T>25  Key(const T&) {}26  bool operator==(const Key&) const { return true; }27};28 29template <>30struct std::hash<Key> {31  std::size_t operator()(Key const&) const { return 0; }32};33 34int main(int, char**) {35  typedef std::unordered_map<Key, int> MapT;36  typedef MapT::iterator Iter;37  MapT map;38  Iter it = map.find(Key(0));39  assert(it == map.end());40  std::pair<Iter, bool> result = map.insert(std::make_pair(Key(0), 42));41  assert(result.second);42  assert(result.first->second == 42);43 44  return 0;45}46