From Jason Turner

[range.common]

Diff to HTML by rtfpessoa

tmp/tmp6k8_tskb/{from.md → to.md} RENAMED
@@ -51,11 +51,11 @@ namespace std::ranges {
51
  constexpr explicit common_view(V r);
52
 
53
  constexpr V base() const & requires copy_constructible<V> { return base_; }
54
  constexpr V base() && { return std::move(base_); }
55
 
56
- constexpr auto begin() {
57
  if constexpr (random_access_range<V> && sized_range<V>)
58
  return ranges::begin(base_);
59
  else
60
  return common_iterator<iterator_t<V>, sentinel_t<V>>(ranges::begin(base_));
61
  }
@@ -65,11 +65,11 @@ namespace std::ranges {
65
  return ranges::begin(base_);
66
  else
67
  return common_iterator<iterator_t<const V>, sentinel_t<const V>>(ranges::begin(base_));
68
  }
69
 
70
- constexpr auto end() {
71
  if constexpr (random_access_range<V> && sized_range<V>)
72
  return ranges::begin(base_) + ranges::distance(base_);
73
  else
74
  return common_iterator<iterator_t<V>, sentinel_t<V>>(ranges::end(base_));
75
  }
@@ -85,10 +85,17 @@ namespace std::ranges {
85
  return ranges::size(base_);
86
  }
87
  constexpr auto size() const requires sized_range<const V> {
88
  return ranges::size(base_);
89
  }
 
 
 
 
 
 
 
90
  };
91
 
92
  template<class R>
93
  common_view(R&&) -> common_view<views::all_t<R>>;
94
  }
 
51
  constexpr explicit common_view(V r);
52
 
53
  constexpr V base() const & requires copy_constructible<V> { return base_; }
54
  constexpr V base() && { return std::move(base_); }
55
 
56
+ constexpr auto begin() requires (!simple-view<V>) {
57
  if constexpr (random_access_range<V> && sized_range<V>)
58
  return ranges::begin(base_);
59
  else
60
  return common_iterator<iterator_t<V>, sentinel_t<V>>(ranges::begin(base_));
61
  }
 
65
  return ranges::begin(base_);
66
  else
67
  return common_iterator<iterator_t<const V>, sentinel_t<const V>>(ranges::begin(base_));
68
  }
69
 
70
+ constexpr auto end() requires (!simple-view<V>) {
71
  if constexpr (random_access_range<V> && sized_range<V>)
72
  return ranges::begin(base_) + ranges::distance(base_);
73
  else
74
  return common_iterator<iterator_t<V>, sentinel_t<V>>(ranges::end(base_));
75
  }
 
85
  return ranges::size(base_);
86
  }
87
  constexpr auto size() const requires sized_range<const V> {
88
  return ranges::size(base_);
89
  }
90
+
91
+ constexpr auto reserve_hint() requires approximately_sized_range<V> {
92
+ return ranges::reserve_hint(base_);
93
+ }
94
+ constexpr auto reserve_hint() const requires approximately_sized_range<const V> {
95
+ return ranges::reserve_hint(base_);
96
+ }
97
  };
98
 
99
  template<class R>
100
  common_view(R&&) -> common_view<views::all_t<R>>;
101
  }