1e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant//===----------------------------------------------------------------------===// 2e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// 3e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// The LLVM Compiler Infrastructure 4e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// 5e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// 8e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant//===----------------------------------------------------------------------===// 9e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant 10e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// <unordered_map> 11e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant 12e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, 13e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// class Alloc = allocator<pair<const Key, T>>> 14e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// class unordered_map 15e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant 16e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant// http://llvm.org/bugs/show_bug.cgi?id=16538 179b128e06edf05507ae10f4892d2445d8376db235Howard Hinnant// http://llvm.org/bugs/show_bug.cgi?id=16549 18e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant 19e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant#include <unordered_map> 20e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant 21e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnantstruct Key { 22e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant template <typename T> Key(const T&) {} 23e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant bool operator== (const Key&) const { return true; } 24e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant}; 25e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant 26e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnantnamespace std 27e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant{ 28e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant template <> 29e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant struct hash<Key> 30e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant { 31e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant size_t operator()(Key const &) const {return 0;} 32e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant }; 33e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant} 34e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant 35e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnantint 36e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnantmain() 37e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant{ 38e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant std::unordered_map<Key, int>::iterator it = 39e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant std::unordered_map<Key, int>().find(Key(0)); 409b128e06edf05507ae10f4892d2445d8376db235Howard Hinnant std::pair<std::unordered_map<Key, int>::iterator, bool> result = 419b128e06edf05507ae10f4892d2445d8376db235Howard Hinnant std::unordered_map<Key, int>().insert(std::make_pair(Key(0), 0)); 42e008d4eecc8a715139fc2bec0ff2921875e164e1Howard Hinnant} 43