File: incrementable.h

package info (click to toggle)
llvm-toolchain-13 1%3A13.0.1-6~deb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,418,812 kB
  • sloc: cpp: 5,290,827; ansic: 996,570; asm: 544,593; python: 188,212; objc: 72,027; lisp: 30,291; f90: 25,395; sh: 24,900; javascript: 9,780; pascal: 9,398; perl: 7,484; ml: 5,432; awk: 3,523; makefile: 2,892; xml: 953; cs: 573; fortran: 539
file content (183 lines) | stat: -rw-r--r-- 5,752 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LIBCPP_TEST_STD_ITERATORS_ITERATOR_REQUIREMENTS_ITERATOR_CONCEPTS_INCREMENTABLE_H
#define LIBCPP_TEST_STD_ITERATORS_ITERATOR_REQUIREMENTS_ITERATOR_CONCEPTS_INCREMENTABLE_H

struct postfix_increment_returns_void {
  using difference_type = int;
  postfix_increment_returns_void& operator++();
  void operator++(int);
};

struct postfix_increment_returns_copy {
  using difference_type = int;
  postfix_increment_returns_copy& operator++();
  postfix_increment_returns_copy operator++(int);
};

struct has_integral_minus {
  has_integral_minus& operator++();
  has_integral_minus operator++(int);

  long operator-(has_integral_minus) const;
};

struct has_distinct_difference_type_and_minus {
  using difference_type = short;

  has_distinct_difference_type_and_minus& operator++();
  has_distinct_difference_type_and_minus operator++(int);

  long operator-(has_distinct_difference_type_and_minus) const;
};

struct missing_difference_type {
  missing_difference_type& operator++();
  void operator++(int);
};

struct floating_difference_type {
  using difference_type = float;

  floating_difference_type& operator++();
  void operator++(int);
};

struct non_const_minus {
  non_const_minus& operator++();
  non_const_minus operator++(int);

  long operator-(non_const_minus);
};

struct non_integral_minus {
  non_integral_minus& operator++();
  non_integral_minus operator++(int);

  void operator-(non_integral_minus);
};

struct bad_difference_type_good_minus {
  using difference_type = float;

  bad_difference_type_good_minus& operator++();
  void operator++(int);

  int operator-(bad_difference_type_good_minus) const;
};

struct not_default_initializable {
  using difference_type = int;
  not_default_initializable() = delete;

  not_default_initializable& operator++();
  void operator++(int);
};

struct not_movable {
  using difference_type = int;

  not_movable() = default;
  not_movable(not_movable&&) = delete;

  not_movable& operator++();
  void operator++(int);
};

struct preinc_not_declared {
  using difference_type = int;

  void operator++(int);
};

struct postinc_not_declared {
  using difference_type = int;

  postinc_not_declared& operator++();
};

struct incrementable_with_difference_type {
  using difference_type = int;

  incrementable_with_difference_type& operator++();
  incrementable_with_difference_type operator++(int);

  bool operator==(incrementable_with_difference_type const&) const;
};

struct incrementable_without_difference_type {
  incrementable_without_difference_type& operator++();
  incrementable_without_difference_type operator++(int);

  bool operator==(incrementable_without_difference_type const&) const;

  int operator-(incrementable_without_difference_type) const;
};

struct difference_type_and_void_minus {
  using difference_type = int;

  difference_type_and_void_minus& operator++();
  difference_type_and_void_minus operator++(int);

  bool operator==(difference_type_and_void_minus const&) const;

  void operator-(difference_type_and_void_minus) const;
};

struct noncopyable_with_difference_type {
  using difference_type = int;

  noncopyable_with_difference_type() = default;
  noncopyable_with_difference_type(noncopyable_with_difference_type&&) = default;
  noncopyable_with_difference_type(noncopyable_with_difference_type const&) = delete;

  noncopyable_with_difference_type& operator=(noncopyable_with_difference_type&&) = default;
  noncopyable_with_difference_type& operator=(noncopyable_with_difference_type const&) = delete;

  noncopyable_with_difference_type& operator++();
  noncopyable_with_difference_type operator++(int);

  bool operator==(noncopyable_with_difference_type const&) const;
};

struct noncopyable_without_difference_type {
  noncopyable_without_difference_type() = default;
  noncopyable_without_difference_type(noncopyable_without_difference_type&&) = default;
  noncopyable_without_difference_type(noncopyable_without_difference_type const&) = delete;

  noncopyable_without_difference_type& operator=(noncopyable_without_difference_type&&) = default;
  noncopyable_without_difference_type& operator=(noncopyable_without_difference_type const&) = delete;

  noncopyable_without_difference_type& operator++();
  noncopyable_without_difference_type operator++(int);

  int operator-(noncopyable_without_difference_type const&) const;

  bool operator==(noncopyable_without_difference_type const&) const;
};

struct noncopyable_with_difference_type_and_minus {
  using difference_type = int;

  noncopyable_with_difference_type_and_minus() = default;
  noncopyable_with_difference_type_and_minus(noncopyable_with_difference_type_and_minus&&) = default;
  noncopyable_with_difference_type_and_minus(noncopyable_with_difference_type_and_minus const&) = delete;

  noncopyable_with_difference_type_and_minus& operator=(noncopyable_with_difference_type_and_minus&&) = default;
  noncopyable_with_difference_type_and_minus& operator=(noncopyable_with_difference_type_and_minus const&) = delete;

  noncopyable_with_difference_type_and_minus& operator++();
  noncopyable_with_difference_type_and_minus operator++(int);

  int operator-(noncopyable_with_difference_type_and_minus const&) const;

  bool operator==(noncopyable_with_difference_type_and_minus const&) const;
};

#endif // #define LIBCPP_TEST_STD_ITERATORS_ITERATOR_REQUIREMENTS_ITERATOR_CONCEPTS_INCREMENTABLE_H