1// 2005-08-29 Paolo Carlini <pcarlini@suse.de> 2// 3// Copyright (C) 2005, 2009 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 3, or (at your option) 9// any later version. 10// 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15// 16// You should have received a copy of the GNU General Public License along 17// with this library; see the file COPYING3. If not see 18// <http://www.gnu.org/licenses/>. 19 20#include <map> 21#include <stdexcept> 22#include <testsuite_hooks.h> 23 24// libstdc++/23578 25void test01() 26{ 27 bool test __attribute__((unused)) = true; 28 typedef std::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 74int main() 75{ 76 test01(); 77 return 0; 78} 79