From Jason Turner

[front.insert.iterator]

Diff to HTML by rtfpessoa

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