From Jason Turner

[insert.iterator]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmptucwwzmr/{from.md → to.md} +68 -12
tmp/tmptucwwzmr/{from.md → to.md} RENAMED
@@ -3,30 +3,86 @@
3
  ``` cpp
4
  namespace std {
5
  template<class Container>
6
  class insert_iterator {
7
  protected:
8
- Container* container;
9
- typename Container::iterator iter;
10
 
11
  public:
12
  using iterator_category = output_iterator_tag;
13
  using value_type = void;
14
- using difference_type = void;
15
  using pointer = void;
16
  using reference = void;
17
  using container_type = Container;
18
 
19
- insert_iterator(Container& x, typename Container::iterator i);
20
- insert_iterator& operator=(const typename Container::value_type& value);
21
- insert_iterator& operator=(typename Container::value_type&& value);
 
22
 
23
- insert_iterator& operator*();
24
- insert_iterator& operator++();
25
- insert_iterator& operator++(int);
26
  };
27
-
28
- template <class Container>
29
- insert_iterator<Container> inserter(Container& x, typename Container::iterator i);
30
  }
31
  ```
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  ``` cpp
4
  namespace std {
5
  template<class Container>
6
  class insert_iterator {
7
  protected:
8
+ Container* container = nullptr;
9
+ ranges::iterator_t<Container> iter = ranges::iterator_t<Container>();
10
 
11
  public:
12
  using iterator_category = output_iterator_tag;
13
  using value_type = void;
14
+ using difference_type = ptrdiff_t;
15
  using pointer = void;
16
  using reference = void;
17
  using container_type = Container;
18
 
19
+ insert_iterator() = default;
20
+ constexpr insert_iterator(Container& x, ranges::iterator_t<Container> i);
21
+ constexpr insert_iterator& operator=(const typename Container::value_type& value);
22
+ constexpr insert_iterator& operator=(typename Container::value_type&& value);
23
 
24
+ constexpr insert_iterator& operator*();
25
+ constexpr insert_iterator& operator++();
26
+ constexpr insert_iterator& operator++(int);
27
  };
 
 
 
28
  }
29
  ```
30
 
31
+ ##### Operations <a id="insert.iter.ops">[[insert.iter.ops]]</a>
32
+
33
+ ``` cpp
34
+ constexpr insert_iterator(Container& x, ranges::iterator_t<Container> i);
35
+ ```
36
+
37
+ *Effects:* Initializes `container` with `addressof(x)` and `iter` with
38
+ `i`.
39
+
40
+ ``` cpp
41
+ constexpr insert_iterator& operator=(const typename Container::value_type& value);
42
+ ```
43
+
44
+ *Effects:* As if by:
45
+
46
+ ``` cpp
47
+ iter = container->insert(iter, value);
48
+ ++iter;
49
+ ```
50
+
51
+ *Returns:* `*this`.
52
+
53
+ ``` cpp
54
+ constexpr insert_iterator& operator=(typename Container::value_type&& value);
55
+ ```
56
+
57
+ *Effects:* As if by:
58
+
59
+ ``` cpp
60
+ iter = container->insert(iter, std::move(value));
61
+ ++iter;
62
+ ```
63
+
64
+ *Returns:* `*this`.
65
+
66
+ ``` cpp
67
+ constexpr insert_iterator& operator*();
68
+ ```
69
+
70
+ *Returns:* `*this`.
71
+
72
+ ``` cpp
73
+ constexpr insert_iterator& operator++();
74
+ constexpr insert_iterator& operator++(int);
75
+ ```
76
+
77
+ *Returns:* `*this`.
78
+
79
+ ##### `inserter` <a id="inserter">[[inserter]]</a>
80
+
81
+ ``` cpp
82
+ template<class Container>
83
+ constexpr insert_iterator<Container>
84
+ inserter(Container& x, ranges::iterator_t<Container> i);
85
+ ```
86
+
87
+ *Returns:* `insert_iterator<Container>(x, i)`.
88
+