26
26
\ref{unord} & Unordered associative containers &
27
27
\tcode{<unordered_map>}, \tcode{<unordered_set>} \\ \rowsep
28
28
\ref{container.adaptors} & Container adaptors &
29
- \tcode{<queue>}, \tcode{<stack>}, \tcode{<flat_map>}, \tcode{flat_set} \\ \rowsep
29
+ \tcode{<queue>}, \tcode{<stack>}, \tcode{<flat_map>}, \tcode{< flat_set> } \\ \rowsep
30
30
\ref{views} & Views & \tcode{<span>} \\
31
31
\end{libsumtab}
32
32
@@ -14783,12 +14783,12 @@
14783
14783
flat_map(sorted_unique_t, InputIterator, InputIterator, Compare = Compare())
14784
14784
-> flat_map<@\exposid{iter-key-type}@<InputIterator>, @\exposid{iter-mapped-type}@<InputIterator>, Compare>;
14785
14785
14786
- template<ranges::input_range R, class Compare = less<@\exposid{range-key-type}@<R>>,
14786
+ template<ranges::@\libconcept{ input_range}@ R, class Compare = less<@\exposid{range-key-type}@<R>>,
14787
14787
class Allocator>
14788
14788
flat_map(from_range_t, R&&, Compare = Compare(), Allocator = Allocator())
14789
14789
-> flat_map<@\exposid{range-key-type}@<R>, @\exposid{range-mapped-type}@<R>, Compare>;
14790
14790
14791
- template<ranges::input_range R, class Allocator>
14791
+ template<ranges::@\libconcept{ input_range}@ R, class Allocator>
14792
14792
flat_map(from_range_t, R&&, Allocator)
14793
14793
-> flat_map<@\exposid{range-key-type}@<R>, @\exposid{range-mapped-type}@<R>>;
14794
14794
@@ -15890,12 +15890,12 @@
15890
15890
flat_multimap(sorted_equivalent_t, InputIterator, InputIterator, Compare = Compare())
15891
15891
-> flat_multimap<@\exposid{iter-key-type}@<InputIterator>, @\exposid{iter-mapped-type}@<InputIterator>, Compare>;
15892
15892
15893
- template<ranges::input_range R, class Compare = less<@\exposid{range-key-type}@<R>>,
15893
+ template<ranges::@\libconcept{ input_range}@ R, class Compare = less<@\exposid{range-key-type}@<R>>,
15894
15894
class Allocator>
15895
15895
flat_multimap(from_range_t, R&&, Compare = Compare(), Allocator = Allocator())
15896
15896
-> flat_multimap<@\exposid{range-key-type}@<R>, @\exposid{range-mapped-type}@<R>, Compare>;
15897
15897
15898
- template<ranges::input_range R, class Allocator>
15898
+ template<ranges::@\libconcept{ input_range}@ R, class Allocator>
15899
15899
flat_multimap(from_range_t, R&&, Allocator)
15900
15900
-> flat_multimap<@\exposid{range-key-type}@<R>, @\exposid{range-mapped-type}@<R>>;
15901
15901
16105
16105
class flat_set;
16106
16106
16107
16107
struct sorted_unique_t { explicit sorted_unique_t() = default; };
16108
- inline constexpr sorted_unique_t sorted_unique {};
16108
+ inline constexpr sorted_unique_t sorted_unique{};
16109
16109
16110
16110
template<class Key, class Compare, class KeyContainer, class Predicate>
16111
16111
size_t erase_if(flat_set<Key, Compare, KeyContainer>& c, Predicate pred);
16118
16118
class flat_multiset;
16119
16119
16120
16120
struct sorted_equivalent_t { explicit sorted_equivalent_t() = default; };
16121
- inline constexpr sorted_equivalent_t sorted_equivalent {};
16121
+ inline constexpr sorted_equivalent_t sorted_equivalent{};
16122
16122
16123
16123
template<class Key, class Compare, class KeyContainer, class Predicate>
16124
16124
size_t erase_if(flat_multiset<Key, Compare, KeyContainer>& c, Predicate pred);
16144
16144
16145
16145
\pnum
16146
16146
A \tcode{flat_set} meets all of the requirements
16147
- for a container \iref{container.reqmts} and
16147
+ for a container\iref{container.reqmts} and
16148
16148
for a reversible container\iref{container.rev.reqmts},
16149
16149
plus the optional container requirements\iref{container.opt.reqmts}.
16150
16150
\tcode{flat_set} meets the requirements of
@@ -16164,12 +16164,12 @@
16164
16164
\begin{note}
16165
16165
A \tcode{flat_set} does not meet
16166
16166
the additional requirements of an allocator-aware container,
16167
- as described in\iref {container.alloc.reqmts}.
16167
+ as described in \ref {container.alloc.reqmts}.
16168
16168
\end{note}
16169
16169
16170
16170
\pnum
16171
16171
A \tcode{flat_set} also provides most operations
16172
- described in\iref {associative.reqmts} for unique keys.
16172
+ described in \ref {associative.reqmts} for unique keys.
16173
16173
This means that a \tcode{flat_set} supports
16174
16174
the \tcode{a_uniq} operations in \ref{associative.reqmts},
16175
16175
but not support the \tcode{a_eq} operations.
@@ -16186,14 +16186,14 @@
16186
16186
respect to the comparison object.
16187
16187
16188
16188
\pnum
16189
- If any member function in \ref{flat.set} exits via an exception,
16189
+ If any member function in \ref{flat.set.defn } exits via an exception,
16190
16190
the invariant is restored.
16191
16191
\begin{note}
16192
16192
This can result in the \tcode{flat_set}'s being emptied.
16193
16193
\end{note}
16194
16194
16195
16195
\pnum
16196
- Any sequence container \ref {sequence.reqmts}
16196
+ Any sequence container\iref {sequence.reqmts}
16197
16197
supporting \oldconcept{RandomAccessIterator}
16198
16198
can be used to instantiate \tcode{flat_set}.
16199
16199
In particular, \tcode{vector}\iref{vector} and \tcode{deque}\iref{deque}
@@ -16269,11 +16269,11 @@
16269
16269
: flat_set(fr, std::forward<R>(range), key_compare()) { }
16270
16270
template<@\exposconcept{container-compatible-range}@<value_type> R, class Allocator>
16271
16271
flat_set(from_range_t, R&& rg, const Allocator& a);
16272
- template<@\placeholder {container-compatible-range}@<value_type> R>
16272
+ template<@\exposconcept {container-compatible-range}@<value_type> R>
16273
16273
flat_set(from_range_t, R&& rg, const key_compare& comp)
16274
16274
: flat_set(comp)
16275
16275
{ insert_range(std::forward<R>(range)); }
16276
- template<@\placeholder {container-compatible-range}@<value_type> R, class Allocator>
16276
+ template<@\exposconcept {container-compatible-range}@<value_type> R, class Allocator>
16277
16277
flat_set(from_range_t, R&& rg, const key_compare& comp,
16278
16278
const Allocator& a);
16279
16279
16350
16350
void insert(InputIterator first, InputIterator last);
16351
16351
template<class InputIterator>
16352
16352
void insert(sorted_unique_t, InputIterator first, InputIterator last);
16353
- template<@\placeholder {container-compatible-range}@<value_type> R>
16353
+ template<@\exposconcept {container-compatible-range}@<value_type> R>
16354
16354
void insert_range(R&& rg);
16355
16355
16356
16356
void insert(initializer_list<key_type> il)
16405
16405
16406
16406
friend bool operator==(const flat_set& x, const flat_set& y);
16407
16407
16408
- friend @\exposconcept {synth-three-way-result}@<value_type>
16409
- operator<=>(const flat_set& x, const flat_set& y);
16408
+ friend @\placeholder {synth-three-way-result}@<value_type>
16409
+ operator<=>(const flat_set& x, const flat_set& y);
16410
16410
16411
16411
friend void swap(flat_set& x, flat_set& y) noexcept { x.swap(y); }
16412
16412
@@ -16423,12 +16423,12 @@
16423
16423
flat_set(sorted_unique_t, InputIterator, InputIterator, Compare = Compare())
16424
16424
-> flat_set<@\placeholder{iter-value-type}@<InputIterator>, Compare>;
16425
16425
16426
- template<ranges::input_range R, class Compare = less<ranges::range_value_t<R>>,
16426
+ template<ranges::@\libconcept{ input_range}@ R, class Compare = less<ranges::range_value_t<R>>,
16427
16427
class Allocator = allocator<ranges::range_value_t<R>>>
16428
16428
flat_set(from_range_t, R&&, Compare = Compare(), Allocator = Allocator())
16429
16429
-> flat_set<ranges::range_value_t<R>, Compare>;
16430
16430
16431
- template<ranges::input_range R, class Allocator>
16431
+ template<ranges::@\libconcept{ input_range}@ R, class Allocator>
16432
16432
flat_set(from_range_t, R&&, Allocator)
16433
16433
-> flat_set<ranges::range_value_t<R>, less<ranges::range_value_t<R>>>;
16434
16434
16588
16588
the \tcode{bool} component of the returned pair is \tcode{true}
16589
16589
if and only if the insertion took place.
16590
16590
The returned iterator points to the element
16591
- whose key is equivalent to \tcode{k }.
16591
+ whose key is equivalent to \tcode{x }.
16592
16592
\end{itemdescr}
16593
16593
16594
16594
\indexlibrarymember{insert}{flatset}%
16648
16648
\effects
16649
16649
Adds elements to \exposid{c} as if by:
16650
16650
\begin{codeblock}
16651
- for (const auto& e : range ) {
16651
+ for (const auto& e : rg ) {
16652
16652
c.insert(c.end(), e);
16653
16653
}
16654
16654
\end{codeblock}
@@ -16689,11 +16689,11 @@
16689
16689
container_type extract() &&;
16690
16690
\end{itemdecl}
16691
16691
16692
+ \begin{itemdescr}
16692
16693
\pnum
16693
16694
\ensures
16694
16695
\tcode{*this} is emptied, even if the function exits via an exception.
16695
16696
16696
- \begin{itemdescr}
16697
16697
\pnum
16698
16698
\returns
16699
16699
\tcode{std::move(c)}.
16740
16740
\rSec3[flat.multiset.overview]{Overview}
16741
16741
16742
16742
\pnum
16743
- \indexlibraryglobal{flat.multiset }%
16743
+ \indexlibraryglobal{flat_multiset }%
16744
16744
A \tcode{flat_multiset} is a container adaptor
16745
16745
that provides an associative container interface
16746
16746
that supports equivalent keys
@@ -16796,11 +16796,11 @@
16796
16796
If any member function in \ref{flat.multiset.defn} exits via an exception,
16797
16797
the invariant is restored.
16798
16798
\begin{note}
16799
- This cat result in the \tcode{flat_multiset}'s being emptied.
16799
+ This can result in the \tcode{flat_multiset}'s being emptied.
16800
16800
\end{note}
16801
16801
16802
16802
\pnum
16803
- Any sequence container \ref {sequence.reqmts}
16803
+ Any sequence container\iref {sequence.reqmts}
16804
16804
supporting \oldconcept{RandomAccessIterator}
16805
16805
can be used to instantiate \tcode{flat_multiset}.
16806
16806
In particular,
17010
17010
17011
17011
friend bool operator==(const flat_multiset& x, const flat_multiset& y);
17012
17012
17013
- friend @\exposconcept {synth-three-way-result}@<value_type>
17014
- operator<=>(const flat_multiset& x, const flat_multiset& y);
17013
+ friend @\placeholder {synth-three-way-result}@<value_type>
17014
+ operator<=>(const flat_multiset& x, const flat_multiset& y);
17015
17015
17016
17016
friend void swap(flat_multiset& x, flat_multiset& y) noexcept
17017
17017
{ x.swap(y); }
@@ -17021,20 +17021,20 @@
17021
17021
key_compare @\exposid{compare}@; // \expos
17022
17022
};
17023
17023
17024
- template<class InputIterator, class Compare = less<@\exposid {iter-value-type}@<InputIterator>>>
17024
+ template<class InputIterator, class Compare = less<@\placeholder {iter-value-type}@<InputIterator>>>
17025
17025
flat_multiset(InputIterator, InputIterator, Compare = Compare())
17026
- -> flat_multiset<@\placeholder{iter-value-type}@<InputIterator>, @\exposid {iter-value-type}@<InputIterator>, Compare>;
17026
+ -> flat_multiset<@\placeholder{iter-value-type}@<InputIterator>, @\placeholder {iter-value-type}@<InputIterator>, Compare>;
17027
17027
17028
- template<class InputIterator, class Compare = less<@\exposid {iter-value-type}@<InputIterator>>>
17028
+ template<class InputIterator, class Compare = less<@\placeholder {iter-value-type}@<InputIterator>>>
17029
17029
flat_multiset(sorted_equivalent_t, InputIterator, InputIterator, Compare = Compare())
17030
- -> flat_multiset<@\placeholder{iter-value-type}@<InputIterator>, @\exposid {iter-value-type}@<InputIterator>, Compare>;
17030
+ -> flat_multiset<@\placeholder{iter-value-type}@<InputIterator>, @\placeholder {iter-value-type}@<InputIterator>, Compare>;
17031
17031
17032
- template<ranges::input_range R, class Compare = less<ranges::range_value_t<R>>,
17033
- class Allocator = allocator<ranges::range_value_t<R>>>
17032
+ template<ranges::@\libconcept{ input_range}@ R, class Compare = less<ranges::range_value_t<R>>,
17033
+ class Allocator = allocator<ranges::range_value_t<R>>>
17034
17034
flat_multiset(from_range_t, R&&, Compare = Compare(), Allocator = Allocator())
17035
17035
-> flat_multiset<ranges::range_value_t<R>, Compare>;
17036
17036
17037
- template<ranges::input_range R, class Allocator>
17037
+ template<ranges::@\libconcept{ input_range}@ R, class Allocator>
17038
17038
flat_multiset(from_range_t, R&&, Allocator)
17039
17039
-> flat_multiset<ranges::range_value_t<R>, less<ranges::range_value_t<R>>>;
17040
17040
17276
17276
17277
17277
\pnum
17278
17278
\effects
17279
- Equivalent to:
17280
- \begin{codeblock}
17281
- c = std::move(cont);
17282
- \end{codeblock}
17279
+ Equivalent to: \tcode{c = std::move(cont);}
17283
17280
\end{itemdescr}
17284
17281
17285
17282
\rSec3[flat.multiset.erasure]{Erasure}
0 commit comments