1// { dg-do compile } 2// -*- C++ -*- 3 4// Copyright (C) 2005-2015 Free Software Foundation, Inc. 5// 6// This file is part of the GNU ISO C++ Library. This library is free 7// software; you can redistribute it and/or modify it under the terms 8// of the GNU General Public License as published by the Free Software 9// Foundation; either version 3, or (at your option) any later 10// version. 11 12// This library is distributed in the hope that it will be useful, but 13// WITHOUT ANY WARRANTY; without even the implied warranty of 14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15// General Public License for more details. 16 17// You should have received a copy of the GNU General Public License 18// along with this library; see the file COPYING3. If not see 19// <http://www.gnu.org/licenses/>. 20 21 22// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. 23 24// Permission to use, copy, modify, sell, and distribute this software 25// is hereby granted without fee, provided that the above copyright 26// notice appears in all copies, and that both that copyright notice 27// and this permission notice appear in supporting documentation. None 28// of the above authors, nor IBM Haifa Research Laboratories, make any 29// representation about the suitability of this software for any 30// purpose. It is provided "as is" without express or implied 31// warranty. 32 33/** 34 * @file hash_bad_find_example.cpp 35 * An example showing how *not* to use unordered containers. 36 */ 37 38/** 39 * This non-compiling example shows wrong use of unordered 40 * associative-containers. These types of containers have distinct 41 * point-type and range-type iterator types. 42 **/ 43 44#include <utility> 45#include <ext/pb_ds/assoc_container.hpp> 46 47using namespace std; 48using namespace __gnu_pbds; 49 50int main() 51{ 52 // A collision-chaining hash table mapping ints to chars. 53 typedef cc_hash_table<int, char> map_t; 54 55 // A map_t object. 56 map_t h; 57 58 // Insert a value mapping the int 1 to the char 'a'. 59 h.insert(make_pair(1, 'a')); 60 61 // Find the entry of the key '1' the* wrong* way. 62 // The following line will not compile, since map_t::find returns a 63 // point-iterator, which, by design, is not convertible to a 64 // range-iterator. 65 map_t::iterator it = h.find(1); // { dg-error "conversion from" } 66 67 return 0; 68} 69 70