From Jason Turner

[string.cons]

Diff to HTML by rtfpessoa

tmp/tmp6_zcidjh/{from.md → to.md} RENAMED
@@ -92,11 +92,11 @@ is equal to `0`.
92
  ``` cpp
93
  constexpr basic_string(const charT* s, const Allocator& a = Allocator());
94
  ```
95
 
96
  *Constraints:* `Allocator` is a type that qualifies as an
97
- allocator [[container.requirements.general]].
98
 
99
  [*Note 1*: This affects class template argument
100
  deduction. — *end note*]
101
 
102
  *Effects:* Equivalent to: `basic_string(s, traits::length(s), a)`.
@@ -104,11 +104,11 @@ deduction. — *end note*]
104
  ``` cpp
105
  constexpr basic_string(size_type n, charT c, const Allocator& a = Allocator());
106
  ```
107
 
108
  *Constraints:* `Allocator` is a type that qualifies as an
109
- allocator [[container.requirements.general]].
110
 
111
  [*Note 2*: This affects class template argument
112
  deduction. — *end note*]
113
 
114
  *Effects:* Constructs an object whose value consists of `n` copies of
@@ -118,11 +118,11 @@ deduction. — *end note*]
118
  template<class InputIterator>
119
  constexpr basic_string(InputIterator begin, InputIterator end, const Allocator& a = Allocator());
120
  ```
121
 
122
  *Constraints:* `InputIterator` is a type that qualifies as an input
123
- iterator [[container.requirements.general]].
124
 
125
  *Effects:* Constructs a string from the values in the range \[`begin`,
126
  `end`), as specified in [[sequence.reqmts]].
127
 
128
  ``` cpp
@@ -160,11 +160,11 @@ template<class InputIterator,
160
  Allocator>;
161
  ```
162
 
163
  *Constraints:* `InputIterator` is a type that qualifies as an input
164
  iterator, and `Allocator` is a type that qualifies as an
165
- allocator [[container.requirements.general]].
166
 
167
  ``` cpp
168
  template<class charT,
169
  class traits,
170
  class Allocator = allocator<charT>>
@@ -179,11 +179,11 @@ template<class charT,
179
  const Allocator& = Allocator())
180
  -> basic_string<charT, traits, Allocator>;
181
  ```
182
 
183
  *Constraints:* `Allocator` is a type that qualifies as an
184
- allocator [[container.requirements.general]].
185
 
186
  ``` cpp
187
  constexpr basic_string& operator=(const basic_string& str);
188
  ```
189
 
@@ -196,13 +196,12 @@ Otherwise, replaces the value of `*this` with a copy of `str`.
196
  constexpr basic_string& operator=(basic_string&& str)
197
  noexcept(allocator_traits<Allocator>::propagate_on_container_move_assignment::value ||
198
  allocator_traits<Allocator>::is_always_equal::value);
199
  ```
200
 
201
- *Effects:* Move assigns as a sequence
202
- container [[container.requirements]], except that iterators, pointers
203
- and references may be invalidated.
204
 
205
  *Returns:* `*this`.
206
 
207
  ``` cpp
208
  template<class T>
 
92
  ``` cpp
93
  constexpr basic_string(const charT* s, const Allocator& a = Allocator());
94
  ```
95
 
96
  *Constraints:* `Allocator` is a type that qualifies as an
97
+ allocator [[container.reqmts]].
98
 
99
  [*Note 1*: This affects class template argument
100
  deduction. — *end note*]
101
 
102
  *Effects:* Equivalent to: `basic_string(s, traits::length(s), a)`.
 
104
  ``` cpp
105
  constexpr basic_string(size_type n, charT c, const Allocator& a = Allocator());
106
  ```
107
 
108
  *Constraints:* `Allocator` is a type that qualifies as an
109
+ allocator [[container.reqmts]].
110
 
111
  [*Note 2*: This affects class template argument
112
  deduction. — *end note*]
113
 
114
  *Effects:* Constructs an object whose value consists of `n` copies of
 
118
  template<class InputIterator>
119
  constexpr basic_string(InputIterator begin, InputIterator end, const Allocator& a = Allocator());
120
  ```
121
 
122
  *Constraints:* `InputIterator` is a type that qualifies as an input
123
+ iterator [[container.reqmts]].
124
 
125
  *Effects:* Constructs a string from the values in the range \[`begin`,
126
  `end`), as specified in [[sequence.reqmts]].
127
 
128
  ``` cpp
 
160
  Allocator>;
161
  ```
162
 
163
  *Constraints:* `InputIterator` is a type that qualifies as an input
164
  iterator, and `Allocator` is a type that qualifies as an
165
+ allocator [[container.reqmts]].
166
 
167
  ``` cpp
168
  template<class charT,
169
  class traits,
170
  class Allocator = allocator<charT>>
 
179
  const Allocator& = Allocator())
180
  -> basic_string<charT, traits, Allocator>;
181
  ```
182
 
183
  *Constraints:* `Allocator` is a type that qualifies as an
184
+ allocator [[container.reqmts]].
185
 
186
  ``` cpp
187
  constexpr basic_string& operator=(const basic_string& str);
188
  ```
189
 
 
196
  constexpr basic_string& operator=(basic_string&& str)
197
  noexcept(allocator_traits<Allocator>::propagate_on_container_move_assignment::value ||
198
  allocator_traits<Allocator>::is_always_equal::value);
199
  ```
200
 
201
+ *Effects:* Move assigns as a sequence container [[sequence.reqmts]],
202
+ except that iterators, pointers and references may be invalidated.
 
203
 
204
  *Returns:* `*this`.
205
 
206
  ``` cpp
207
  template<class T>