From Jason Turner

[iterator.range]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpw2fvq_6o/{from.md → to.md} +68 -3
tmp/tmpw2fvq_6o/{from.md → to.md} RENAMED
@@ -1,6 +1,6 @@
1
- ### range access <a id="iterator.range">[[iterator.range]]</a>
2
 
3
  In addition to being available via inclusion of the `<iterator>` header,
4
  the function templates in [[iterator.range]] are available when any of
5
  the following headers are included: `<array>`, `<deque>`,
6
  `<forward_list>`, `<list>`, `<map>`, `<regex>`, `<set>`, `<string>`,
@@ -19,21 +19,85 @@ template <class C> auto end(const C& c) -> decltype(c.end());
19
  ```
20
 
21
  *Returns:* `c.end()`.
22
 
23
  ``` cpp
24
- template <class T, size_t N> T* begin(T (&array)[N]);
25
  ```
26
 
27
  *Returns:* `array`.
28
 
29
  ``` cpp
30
- template <class T, size_t N> T* end(T (&array)[N]);
31
  ```
32
 
33
  *Returns:* `array + N`.
34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  <!-- Link reference definitions -->
36
  [back.insert.iter.cons]: #back.insert.iter.cons
37
  [back.insert.iter.op*]: #back.insert.iter.op*
38
  [back.insert.iter.op++]: #back.insert.iter.op++
39
  [back.insert.iter.op=]: #back.insert.iter.op=
@@ -111,10 +175,11 @@ template <class T, size_t N> T* end(T (&array)[N]);
111
  [output.iterators]: #output.iterators
112
  [predef.iterators]: #predef.iterators
113
  [random.access.iterators]: #random.access.iterators
114
  [reverse.iter.cons]: #reverse.iter.cons
115
  [reverse.iter.conv]: #reverse.iter.conv
 
116
  [reverse.iter.op!=]: #reverse.iter.op!=
117
  [reverse.iter.op+]: #reverse.iter.op+
118
  [reverse.iter.op++]: #reverse.iter.op++
119
  [reverse.iter.op+=]: #reverse.iter.op+=
120
  [reverse.iter.op-]: #reverse.iter.op-
 
1
+ ## range access <a id="iterator.range">[[iterator.range]]</a>
2
 
3
  In addition to being available via inclusion of the `<iterator>` header,
4
  the function templates in [[iterator.range]] are available when any of
5
  the following headers are included: `<array>`, `<deque>`,
6
  `<forward_list>`, `<list>`, `<map>`, `<regex>`, `<set>`, `<string>`,
 
19
  ```
20
 
21
  *Returns:* `c.end()`.
22
 
23
  ``` cpp
24
+ template <class T, size_t N> constexpr T* begin(T (&array)[N]) noexcept;
25
  ```
26
 
27
  *Returns:* `array`.
28
 
29
  ``` cpp
30
+ template <class T, size_t N> constexpr T* end(T (&array)[N]) noexcept;
31
  ```
32
 
33
  *Returns:* `array + N`.
34
 
35
+ ``` cpp
36
+ template <class C> constexpr auto cbegin(const C& c) noexcept(noexcept(std::begin(c)))
37
+ -> decltype(std::begin(c));
38
+ ```
39
+
40
+ *Returns:* `std::begin(c)`.
41
+
42
+ ``` cpp
43
+ template <class C> constexpr auto cend(const C& c) noexcept(noexcept(std::end(c)))
44
+ -> decltype(std::end(c));
45
+ ```
46
+
47
+ *Returns:* `std::end(c)`.
48
+
49
+ ``` cpp
50
+ template <class C> auto rbegin(C& c) -> decltype(c.rbegin());
51
+ template <class C> auto rbegin(const C& c) -> decltype(c.rbegin());
52
+ ```
53
+
54
+ *Returns:* `c.rbegin()`.
55
+
56
+ ``` cpp
57
+ template <class C> auto rend(C& c) -> decltype(c.rend());
58
+ template <class C> auto rend(const C& c) -> decltype(c.rend());
59
+ ```
60
+
61
+ *Returns:* `c.rend()`.
62
+
63
+ ``` cpp
64
+ template <class T, size_t N> reverse_iterator<T*> rbegin(T (&array)[N]);
65
+ ```
66
+
67
+ *Returns:* `reverse_iterator<T*>(array + N)`.
68
+
69
+ ``` cpp
70
+ template <class T, size_t N> reverse_iterator<T*> rend(T (&array)[N]);
71
+ ```
72
+
73
+ *Returns:* `reverse_iterator<T*>(array)`.
74
+
75
+ ``` cpp
76
+ template <class E> reverse_iterator<const E*> rbegin(initializer_list<E> il);
77
+ ```
78
+
79
+ *Returns:* `reverse_iterator<const E*>(il.end())`.
80
+
81
+ ``` cpp
82
+ template <class E> reverse_iterator<const E*> rend(initializer_list<E> il);
83
+ ```
84
+
85
+ *Returns:* `reverse_iterator<const E*>(il.begin())`.
86
+
87
+ ``` cpp
88
+ template <class C> auto crbegin(const C& c) -> decltype(std::rbegin(c));
89
+ ```
90
+
91
+ *Returns:* `std::rbegin(c)`.
92
+
93
+ ``` cpp
94
+ template <class C> auto crend(const C& c) -> decltype(std::rend(c));
95
+ ```
96
+
97
+ *Returns:* `std::rend(c)`.
98
+
99
  <!-- Link reference definitions -->
100
  [back.insert.iter.cons]: #back.insert.iter.cons
101
  [back.insert.iter.op*]: #back.insert.iter.op*
102
  [back.insert.iter.op++]: #back.insert.iter.op++
103
  [back.insert.iter.op=]: #back.insert.iter.op=
 
175
  [output.iterators]: #output.iterators
176
  [predef.iterators]: #predef.iterators
177
  [random.access.iterators]: #random.access.iterators
178
  [reverse.iter.cons]: #reverse.iter.cons
179
  [reverse.iter.conv]: #reverse.iter.conv
180
+ [reverse.iter.make]: #reverse.iter.make
181
  [reverse.iter.op!=]: #reverse.iter.op!=
182
  [reverse.iter.op+]: #reverse.iter.op+
183
  [reverse.iter.op++]: #reverse.iter.op++
184
  [reverse.iter.op+=]: #reverse.iter.op+=
185
  [reverse.iter.op-]: #reverse.iter.op-