From Jason Turner

[istream.iterator]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp3bkm1mo4/{from.md → to.md} +11 -5
tmp/tmp3bkm1mo4/{from.md → to.md} RENAMED
@@ -1,7 +1,9 @@
1
  ### Class template `istream_iterator` <a id="istream.iterator">[[istream.iterator]]</a>
2
 
 
 
3
  The class template `istream_iterator` is an input iterator
4
  [[input.iterators]] that reads successive elements from the input stream
5
  for which it was constructed.
6
 
7
  ``` cpp
@@ -20,11 +22,11 @@ namespace std {
20
  using istream_type = basic_istream<charT,traits>;
21
 
22
  constexpr istream_iterator();
23
  constexpr istream_iterator(default_sentinel_t);
24
  istream_iterator(istream_type& s);
25
- istream_iterator(const istream_iterator& x) = default;
26
  ~istream_iterator() = default;
27
  istream_iterator& operator=(const istream_iterator&) = default;
28
 
29
  const T& operator*() const;
30
  const T* operator->() const;
@@ -65,17 +67,21 @@ istream_iterator(istream_type& s);
65
 
66
  *Effects:* Initializes `in_stream` with `addressof(s)`,
67
  value-initializes `value`, and then calls `operator++()`.
68
 
69
  ``` cpp
70
- istream_iterator(const istream_iterator& x) = default;
71
  ```
72
 
73
- *Ensures:* `in_stream == x.in_stream` is `true`.
 
74
 
75
- *Remarks:* If `is_trivially_copy_constructible_v<T>` is `true`, then
76
- this constructor is trivial.
 
 
 
77
 
78
  ``` cpp
79
  ~istream_iterator() = default;
80
  ```
81
 
 
1
  ### Class template `istream_iterator` <a id="istream.iterator">[[istream.iterator]]</a>
2
 
3
+ #### General <a id="istream.iterator.general">[[istream.iterator.general]]</a>
4
+
5
  The class template `istream_iterator` is an input iterator
6
  [[input.iterators]] that reads successive elements from the input stream
7
  for which it was constructed.
8
 
9
  ``` cpp
 
22
  using istream_type = basic_istream<charT,traits>;
23
 
24
  constexpr istream_iterator();
25
  constexpr istream_iterator(default_sentinel_t);
26
  istream_iterator(istream_type& s);
27
+ constexpr istream_iterator(const istream_iterator& x) noexcept(see below);
28
  ~istream_iterator() = default;
29
  istream_iterator& operator=(const istream_iterator&) = default;
30
 
31
  const T& operator*() const;
32
  const T* operator->() const;
 
67
 
68
  *Effects:* Initializes `in_stream` with `addressof(s)`,
69
  value-initializes `value`, and then calls `operator++()`.
70
 
71
  ``` cpp
72
+ constexpr istream_iterator(const istream_iterator& x) noexcept(see below);
73
  ```
74
 
75
+ *Effects:* Initializes `in_stream` with `x.in_stream` and initializes
76
+ `value` with `x.value`.
77
 
78
+ *Remarks:* An invocation of this constructor may be used in a core
79
+ constant expression if and only if the initialization of `value` from
80
+ `x.value` is a constant subexpression [[defns.const.subexpr]]. The
81
+ exception specification is equivalent to
82
+ `is_nothrow_copy_constructible_v<T>`.
83
 
84
  ``` cpp
85
  ~istream_iterator() = default;
86
  ```
87