brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · cb7a64b Raw
56 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// <map>10 11// template <class Key, class T, class Compare = less<Key>,12//           class Allocator = allocator<pair<const Key, T>>>13// class map14 15// https://llvm.org/PR1653816// https://llvm.org/PR1654917 18#include <map>19#include <utility>20#include <cassert>21 22#include "test_macros.h"23 24struct Key {25  template <typename T>26  Key(const T&) {}27  bool operator<(const Key&) const { return false; }28};29 30int main(int, char**) {31  typedef std::map<Key, int> MapT;32  typedef MapT::iterator Iter;33  typedef std::pair<Iter, bool> IterBool;34  {35    MapT m_empty;36    MapT m_contains;37    m_contains[Key(0)] = 42;38 39    Iter it = m_empty.find(Key(0));40    assert(it == m_empty.end());41    it = m_contains.find(Key(0));42    assert(it != m_contains.end());43  }44  {45    MapT map;46    IterBool result = map.insert(std::make_pair(Key(0), 42));47    assert(result.second);48    assert(result.first->second == 42);49    IterBool result2 = map.insert(std::make_pair(Key(0), 43));50    assert(!result2.second);51    assert(map[Key(0)] == 42);52  }53 54  return 0;55}56