From Jason Turner

[vector.modifiers]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpgwc1hng_/{from.md → to.md} +15 -3
tmp/tmpgwc1hng_/{from.md → to.md} RENAMED
@@ -28,17 +28,29 @@ iterators referring to the elements in the sequence, as well as the
28
  past-the-end iterator. If no reallocation happens, then references,
29
  pointers, and iterators before the insertion point remain valid but
30
  those at or after the insertion point, including the past-the-end
31
  iterator, are invalidated. If an exception is thrown other than by the
32
  copy constructor, move constructor, assignment operator, or move
33
- assignment operator of `T` or by any `InputIterator` operation there are
34
- no effects. If an exception is thrown while inserting a single element
35
- at the end and `T` is *Cpp17CopyInsertable* or
36
  `is_nothrow_move_constructible_v<T>` is `true`, there are no effects.
37
  Otherwise, if an exception is thrown by the move constructor of a
38
  non-*Cpp17CopyInsertable* `T`, the effects are unspecified.
39
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  ``` cpp
41
  constexpr iterator erase(const_iterator position);
42
  constexpr iterator erase(const_iterator first, const_iterator last);
43
  constexpr void pop_back();
44
  ```
 
28
  past-the-end iterator. If no reallocation happens, then references,
29
  pointers, and iterators before the insertion point remain valid but
30
  those at or after the insertion point, including the past-the-end
31
  iterator, are invalidated. If an exception is thrown other than by the
32
  copy constructor, move constructor, assignment operator, or move
33
+ assignment operator of `T` or by any `InputIterator` operation, there
34
+ are no effects. If an exception is thrown while inserting a single
35
+ element at the end and `T` is *Cpp17CopyInsertable* or
36
  `is_nothrow_move_constructible_v<T>` is `true`, there are no effects.
37
  Otherwise, if an exception is thrown by the move constructor of a
38
  non-*Cpp17CopyInsertable* `T`, the effects are unspecified.
39
 
40
+ For the declarations taking a range `R`, performs at most one
41
+ reallocation if:
42
+
43
+ - `R` models `ranges::approximately_sized_range` and
44
+ `ranges::distance(rg) <= ranges::reserve_hint(rg)` is `true`, or
45
+ - `R` models `ranges::forward_range` and `R` does not model
46
+ `ranges::approximately_sized_range`.
47
+
48
+ For the declarations taking a pair of `InputIterator`, performs at most
49
+ one reallocation if `InputIterator` meets the *Cpp17ForwardIterator*
50
+ requirements.
51
+
52
  ``` cpp
53
  constexpr iterator erase(const_iterator position);
54
  constexpr iterator erase(const_iterator first, const_iterator last);
55
  constexpr void pop_back();
56
  ```