]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 21_strings / basic_string_view / element_access / char / 1.cc
CommitLineData
6458742a 1// { dg-do run { target c++17 } }
ca8f2cb1 2
83ffe9cd 3// Copyright (C) 2013-2023 Free Software Foundation, Inc.
ca8f2cb1
VV
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// basic_string element access
21
22#include <string_view>
ca8f2cb1
VV
23#include <testsuite_hooks.h>
24
42d3f743
AA
25#if __STDC_HOSTED__
26# include <stdexcept>
27#endif // HOSTED
28
118c8424 29void
ca8f2cb1
VV
30test01()
31{
ca8f2cb1
VV
32 typedef std::string_view::size_type csize_type;
33 typedef std::string_view::const_reference cref;
34 typedef std::string_view::reference ref;
35 csize_type csz01, csz02;
36
37 const std::string_view str01("tamarindo, costa rica");
38 std::string_view str02("41st street beach, capitola, california");
39 std::string_view str03;
40
41 // const_reference operator[] (size_type pos) const;
42 csz01 = str01.size();
43 cref cref1 = str01[csz01 - 1];
44 VERIFY( cref1 == 'a' );
45 // Undefined behavior at size().
46 //cref cref2 = str01[csz01];
47 //VERIFY( cref2 == char() );
48
42d3f743 49#if __STDC_HOSTED__
ca8f2cb1
VV
50 // const_reference at(size_type pos) const;
51 csz01 = str01.size();
52 cref cref3 = str01.at(csz01 - 1);
53 VERIFY( cref3 == 'a' );
54 try
55 {
b911ca42 56 (void) str01.at(csz01);
ca8f2cb1
VV
57 VERIFY( false ); // Should not get here, as exception thrown.
58 }
59 catch (std::out_of_range& fail)
60 {
61 VERIFY( true );
62 }
63 catch (...)
64 {
65 VERIFY( false );
66 }
42d3f743 67#endif // HOSTED
ca8f2cb1
VV
68}
69
70int
71main()
72{
73 test01();
74 return 0;
75}