From Jason Turner

[special.mem.concepts]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpodvwm7ig/{from.md → to.md} +16 -16
tmp/tmpodvwm7ig/{from.md → to.md} RENAMED
@@ -3,63 +3,63 @@
3
  Some algorithms in this subclause are constrained with the following
4
  exposition-only concepts:
5
 
6
  ``` cpp
7
  template<class I>
8
- concept no-throw-input-iterator = // exposition only
9
  input_iterator<I> &&
10
  is_lvalue_reference_v<iter_reference_t<I>> &&
11
  same_as<remove_cvref_t<iter_reference_t<I>>, iter_value_t<I>>;
12
  ```
13
 
14
- A type `I` models *`no-throw-input-iterator`* only if no exceptions are
15
  thrown from increment, copy construction, move construction, copy
16
  assignment, move assignment, or indirection through valid iterators.
17
 
18
  [*Note 1*: This concept allows some `input_iterator`
19
  [[iterator.concept.input]] operations to throw
20
  exceptions. — *end note*]
21
 
22
  ``` cpp
23
  template<class S, class I>
24
- concept no-throw-sentinel = sentinel_for<S, I>; // exposition only
25
  ```
26
 
27
- Types `S` and `I` model *`no-throw-sentinel`* only if no exceptions are
28
  thrown from copy construction, move construction, copy assignment, move
29
  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 no-throw-input-range = // exposition only
38
  range<R> &&
39
- no-throw-input-iterator<iterator_t<R>> &&
40
- no-throw-sentinel<sentinel_t<R>, iterator_t<R>>;
41
  ```
42
 
43
- A type `R` models *`no-throw-input-range`* only if no exceptions are
44
- thrown from calls to `ranges::begin` and `ranges::end` on an object of
45
- type `R`.
46
 
47
  ``` cpp
48
  template<class I>
49
- concept no-throw-forward-iterator = // exposition only
50
- no-throw-input-iterator<I> &&
51
  forward_iterator<I> &&
52
- no-throw-sentinel<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 no-throw-forward-range = // exposition only
62
- no-throw-input-range<R> &&
63
- no-throw-forward-iterator<iterator_t<R>>;
64
  ```
65
 
 
3
  Some algorithms in this subclause are constrained with the following
4
  exposition-only concepts:
5
 
6
  ``` cpp
7
  template<class I>
8
+ concept nothrow-input-iterator = // exposition only
9
  input_iterator<I> &&
10
  is_lvalue_reference_v<iter_reference_t<I>> &&
11
  same_as<remove_cvref_t<iter_reference_t<I>>, iter_value_t<I>>;
12
  ```
13
 
14
+ A type `I` models `nothrow-input-iterator` only if no exceptions are
15
  thrown from increment, copy construction, move construction, copy
16
  assignment, move assignment, or indirection through valid iterators.
17
 
18
  [*Note 1*: This concept allows some `input_iterator`
19
  [[iterator.concept.input]] operations to throw
20
  exceptions. — *end note*]
21
 
22
  ``` cpp
23
  template<class S, class I>
24
+ concept nothrow-sentinel-for = sentinel_for<S, I>; // exposition only
25
  ```
26
 
27
+ Types `S` and `I` model `nothrow-sentinel-for` only if no exceptions are
28
  thrown from copy construction, move construction, copy assignment, move
29
  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>> &&
40
+ nothrow-sentinel-for<sentinel_t<R>, iterator_t<R>>;
41
  ```
42
 
43
+ A type `R` models `nothrow-input-range` only if no exceptions are thrown
44
+ from calls to `ranges::begin` and `ranges::end` on an object of type
45
+ `R`.
46
 
47
  ``` cpp
48
  template<class I>
49
+ 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