From Jason Turner

[special.mem.concepts]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpy3qq7awg/{from.md → to.md} +69 -1
tmp/tmpy3qq7awg/{from.md → to.md} RENAMED
@@ -30,10 +30,25 @@ assignment, or comparisons between valid values of type `I` and `S`.
30
 
31
  [*Note 2*: This concept allows some `sentinel_for`
32
  [[iterator.concept.sentinel]] operations to throw
33
  exceptions. — *end note*]
34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  ``` cpp
36
  template<class R>
37
  concept nothrow-input-range = // exposition only
38
  range<R> &&
39
  nothrow-input-iterator<iterator_t<R>> &&
@@ -50,16 +65,69 @@ concept nothrow-forward-iterator = // exposition only
50
  nothrow-input-iterator<I> &&
51
  forward_iterator<I> &&
52
  nothrow-sentinel-for<I, I>;
53
  ```
54
 
55
- [*Note 3*: This concept allows some `forward_iterator`
56
  [[iterator.concept.forward]] operations to throw
57
  exceptions. — *end note*]
58
 
59
  ``` cpp
60
  template<class R>
61
  concept nothrow-forward-range = // exposition only
62
  nothrow-input-range<R> &&
63
  nothrow-forward-iterator<iterator_t<R>>;
64
  ```
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
  [*Note 2*: This concept allows some `sentinel_for`
32
  [[iterator.concept.sentinel]] operations to throw
33
  exceptions. — *end note*]
34
 
35
+ ``` cpp
36
+ template<class S, class I>
37
+ concept nothrow-sized-sentinel-for = // exposition only
38
+ nothrow-sentinel-for<S, I> &&
39
+ sized_sentinel_for<S, I>;
40
+ ```
41
+
42
+ Types `S` and `I` model `nothrow-sized-sentinel-for` only if no
43
+ exceptions are thrown from the `-` operator for valid values of type `I`
44
+ and `S`.
45
+
46
+ [*Note 3*: This concept allows some `sized_sentinel_for`
47
+ [[iterator.concept.sizedsentinel]] operations to throw
48
+ exceptions. — *end note*]
49
+
50
  ``` cpp
51
  template<class R>
52
  concept nothrow-input-range = // exposition only
53
  range<R> &&
54
  nothrow-input-iterator<iterator_t<R>> &&
 
65
  nothrow-input-iterator<I> &&
66
  forward_iterator<I> &&
67
  nothrow-sentinel-for<I, I>;
68
  ```
69
 
70
+ [*Note 4*: This concept allows some `forward_iterator`
71
  [[iterator.concept.forward]] operations to throw
72
  exceptions. — *end note*]
73
 
74
  ``` cpp
75
  template<class R>
76
  concept nothrow-forward-range = // exposition only
77
  nothrow-input-range<R> &&
78
  nothrow-forward-iterator<iterator_t<R>>;
79
  ```
80
 
81
+ ``` cpp
82
+ template<class I>
83
+ concept nothrow-bidirectional-iterator = // exposition only
84
+ nothrow-forward-iterator<I> &&
85
+ bidirectional_iterator<I>;
86
+ ```
87
+
88
+ A type `I` models `nothrow-bidirectional-iterator` only if no exceptions
89
+ are thrown from decrementing valid iterators.
90
+
91
+ [*Note 5*: This concept allows some `bidirectional_iterator`
92
+ [[iterator.concept.bidir]] operations to throw
93
+ exceptions. — *end note*]
94
+
95
+ ``` cpp
96
+ template<class R>
97
+ concept nothrow-bidirectional-range = // exposition only
98
+ nothrow-forward-range<R> &&
99
+ nothrow-bidirectional-iterator<iterator_t<R>>;
100
+ ```
101
+
102
+ ``` cpp
103
+ template<class I>
104
+ concept nothrow-random-access-iterator = // exposition only
105
+ nothrow-bidirectional-iterator<I> &&
106
+ random_access_iterator<I> &&
107
+ nothrow-sized-sentinel-for<I, I>;
108
+ ```
109
+
110
+ A type `I` models `nothrow-random-access-iterator` only if no exceptions
111
+ are thrown from comparisons of valid iterators, or the `-`, `+`, `-=`,
112
+ `+=`, `[]` operators on valid values of type `I` and
113
+ `iter_difference_t<I>`.
114
+
115
+ [*Note 6*: This concept allows some `random_access_iterator`
116
+ [[iterator.concept.random.access]] operations to throw
117
+ exceptions. — *end note*]
118
+
119
+ ``` cpp
120
+ template<class R>
121
+ concept nothrow-random-access-range = // exposition only
122
+ nothrow-bidirectional-range<R> &&
123
+ nothrow-random-access-iterator<iterator_t<R>>;
124
+
125
+ template<class R>
126
+ concept nothrow-sized-random-access-range = // exposition only
127
+ nothrow-random-access-range<R> && sized_range<R>;
128
+ ```
129
+
130
+ A type `R` models `nothrow-sized-random-access-range` only if no
131
+ exceptions are thrown from the call to `ranges::size` on an object of
132
+ type `R`.
133
+