]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/24_iterators/common_iterator/2.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 24_iterators / common_iterator / 2.cc
CommitLineData
a945c346 1// Copyright (C) 2020-2024 Free Software Foundation, Inc.
3bf5e765
PP
2//
3// This file is part of the GNU ISO C++ Library. This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 3, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License along
15// with this library; see the file COPYING3. If not see
16// <http://www.gnu.org/licenses/>.
17
762baaf0 18// { dg-do run { target c++20 } }
3bf5e765
PP
19
20#include <iterator>
21#include <testsuite_hooks.h>
22
23struct value { int n; };
24
25struct sentinel { int limit; };
26
27struct iterator
28{
29 using iterator_category = std::input_iterator_tag;
30 using value_type = value;
31 using difference_type = std::ptrdiff_t;
32 using reference = value;
33
11d3e8f4 34 constexpr value operator*() const { return value{counter}; }
3bf5e765 35
11d3e8f4 36 constexpr iterator& operator++() { ++counter; return *this; }
3bf5e765 37
11d3e8f4 38 constexpr iterator operator++(int) { auto i = *this; ++counter; return i; }
3bf5e765 39
11d3e8f4 40 constexpr bool operator==(sentinel s) const { return counter == s.limit; }
3bf5e765
PP
41
42 int counter = 0;
43};
44
11d3e8f4 45constexpr bool
3bf5e765
PP
46test01()
47{
48 iterator i;
49 sentinel s{2};
50 std::common_iterator<iterator, sentinel> begin = i, end = s;
51 VERIFY( begin->n == 0 );
52 ++begin;
53 VERIFY( begin->n == 1 );
54 ++begin;
55 VERIFY( begin == end );
11d3e8f4
JW
56
57 return true;
3bf5e765
PP
58}
59
60int
61main()
62{
11d3e8f4 63 constexpr bool b1 = test01();
3bf5e765 64}