3 // Copyright (C) 1999-2013 Free Software Foundation, Inc.
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)
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.
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/>.
20 // 21.3.4 basic_string element access
24 #include <testsuite_hooks.h>
28 bool test __attribute__((unused)) = true;
29 typedef std::string::size_type csize_type;
30 typedef std::string::const_reference cref;
31 typedef std::string::reference ref;
32 csize_type csz01, csz02;
34 const std::string str01("tamarindo, costa rica");
35 std::string str02("41st street beach, capitola, california");
38 // const_reference operator[] (size_type pos) const;
40 cref cref1 = str01[csz01 - 1];
41 VERIFY( cref1 == 'a' );
42 cref cref2 = str01[csz01];
43 VERIFY( cref2 == char() );
45 // reference operator[] (size_type pos);
47 ref ref1 = str02[csz02 - 1];
48 VERIFY( ref1 == 'a' );
50 VERIFY( ref2 == '1' );
52 // const_reference at(size_type pos) const;
54 cref cref3 = str01.at(csz01 - 1);
55 VERIFY( cref3 == 'a' );
58 VERIFY( false ); // Should not get here, as exception thrown.
60 catch(std::out_of_range& fail) {
67 // reference at(size_type pos);
69 ref ref3 = str02.at(csz02 - 1);
70 VERIFY( ref3 == 'a' );
73 VERIFY( false ); // Should not get here, as exception thrown.
75 catch(std::out_of_range& fail) {