1 // { dg-do run { target c++11 } } 2 // 2008-05-22 Paolo Carlini <paolo.carlini@oracle.com> 3 // 4 // Copyright (C) 2008-2019 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 8 // terms of the GNU General Public License as published by the 9 // Free Software Foundation; either version 3, or (at your option) 10 // any later version. 11 // 12 // This library is distributed in the hope that it will be useful, 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 // GNU General Public License for more details. 16 // 17 // You should have received a copy of the GNU General Public License along 18 // with this library; see the file COPYING3. If not see 19 // <http://www.gnu.org/licenses/>. 20 21 #include <unordered_map> 22 #include <stdexcept> 23 #include <testsuite_hooks.h> 24 25 // DR 761. unordered_map needs an at() member function. test01()26void test01() 27 { 28 typedef std::unordered_map<int, double> map_type; 29 30 { 31 map_type m; 32 m[0] = 1.5; 33 34 double& rd = m.at(0); 35 VERIFY( rd == 1.5 ); 36 try 37 { 38 m.at(1); 39 } 40 catch(std::out_of_range& obj) 41 { 42 // Expected. 43 } 44 catch(...) 45 { 46 // Failed. 47 throw; 48 } 49 } 50 51 { 52 map_type m; 53 m[1] = 2.5; 54 const map_type cm(m); 55 56 const double& crd = cm.at(1); 57 VERIFY( crd == 2.5 ); 58 try 59 { 60 cm.at(0); 61 } 62 catch(std::out_of_range& obj) 63 { 64 // Expected. 65 } 66 catch(...) 67 { 68 // Failed. 69 throw; 70 } 71 } 72 } 73 main()74int main() 75 { 76 test01(); 77 return 0; 78 } 79