@@ -16957,79 +16957,81 @@
16957
16957
// \ref{flat.set.cons}, constructors
16958
16958
flat_set() : flat_set(key_compare()) { }
16959
16959
16960
- template<class Allocator>
16961
- flat_set(const flat_set&, const Allocator& a);
16962
- template<class Allocator>
16963
- flat_set(flat_set&&, const Allocator& a);
16964
-
16965
16960
explicit flat_set(container_type cont, const key_compare& comp = key_compare());
16966
- template<class Allocator>
16967
- flat_set(const container_type& cont, const Allocator& a);
16968
- template<class Allocator>
16969
- flat_set(const container_type& cont, const key_compare& comp, const Allocator& a);
16970
16961
16971
16962
flat_set(sorted_unique_t, container_type cont, const key_compare& comp = key_compare())
16972
16963
: @\exposid{c}@(std::move(cont)), @\exposid{compare}@(comp) { }
16973
- template<class Allocator>
16974
- flat_set(sorted_unique_t, const container_type& cont, const Allocator& a);
16975
- template<class Allocator>
16976
- flat_set(sorted_unique_t, const container_type& cont,
16977
- const key_compare& comp, const Allocator& a);
16978
16964
16979
16965
explicit flat_set(const key_compare& comp)
16980
16966
: @\exposid{c}@(), @\exposid{compare}@(comp) { }
16981
- template<class Allocator>
16982
- flat_set(const key_compare& comp, const Allocator& a);
16983
- template<class Allocator>
16984
- explicit flat_set(const Allocator& a);
16985
16967
16986
16968
template<class InputIterator>
16987
16969
flat_set(InputIterator first, InputIterator last, const key_compare& comp = key_compare())
16988
16970
: @\exposid{c}@(), @\exposid{compare}@(comp)
16989
16971
{ insert(first, last); }
16990
- template<class InputIterator, class Allocator>
16991
- flat_set(InputIterator first, InputIterator last,
16992
- const key_compare& comp, const Allocator& a);
16993
- template<class InputIterator, class Allocator>
16994
- flat_set(InputIterator first, InputIterator last, const Allocator& a);
16995
16972
16996
16973
template<@\exposconcept{container-compatible-range}@<value_type> R>
16997
16974
flat_set(from_range_t fr, R&& rg)
16998
16975
: flat_set(fr, std::forward<R>(rg), key_compare()) { }
16999
- template<@\exposconcept{container-compatible-range}@<value_type> R, class Allocator>
17000
- flat_set(from_range_t, R&& rg, const Allocator& a);
17001
16976
template<@\exposconcept{container-compatible-range}@<value_type> R>
17002
16977
flat_set(from_range_t, R&& rg, const key_compare& comp)
17003
16978
: flat_set(comp)
17004
16979
{ insert_range(std::forward<R>(rg)); }
17005
- template<@\exposconcept{container-compatible-range}@<value_type> R, class Allocator>
17006
- flat_set(from_range_t, R&& rg, const key_compare& comp, const Allocator& a);
17007
16980
17008
16981
template<class InputIterator>
17009
16982
flat_set(sorted_unique_t, InputIterator first, InputIterator last,
17010
16983
const key_compare& comp = key_compare())
17011
16984
: @\exposid{c}@(first, last), @\exposid{compare}@(comp) { }
17012
- template<class InputIterator, class Allocator>
17013
- flat_set(sorted_unique_t, InputIterator first, InputIterator last,
17014
- const key_compare& comp, const Allocator& a);
17015
- template<class InputIterator, class Allocator>
17016
- flat_set(sorted_unique_t, InputIterator first, InputIterator last, const Allocator& a);
17017
16985
17018
16986
flat_set(initializer_list<value_type> il, const key_compare& comp = key_compare())
17019
16987
: flat_set(il.begin(), il.end(), comp) { }
17020
- template<class Allocator>
17021
- flat_set(initializer_list<value_type> il, const key_compare& comp, const Allocator& a);
17022
- template<class Allocator>
17023
- flat_set(initializer_list<value_type> il, const Allocator& a);
17024
16988
17025
16989
flat_set(sorted_unique_t s, initializer_list<value_type> il,
17026
16990
const key_compare& comp = key_compare())
17027
16991
: flat_set(s, il.begin(), il.end(), comp) { }
17028
- template<class Allocator>
16992
+
16993
+ // \ref{flat.set.cons.alloc}, constructors with allocators
16994
+
16995
+ template<class Alloc>
16996
+ flat_set(const flat_set&, const Alloc& a);
16997
+ template<class Alloc>
16998
+ flat_set(flat_set&&, const Alloc& a);
16999
+ template<class Alloc>
17000
+ flat_set(const container_type& cont, const Alloc& a);
17001
+ template<class Alloc>
17002
+ flat_set(const container_type& cont, const key_compare& comp, const Alloc& a);
17003
+ template<class Alloc>
17004
+ flat_set(sorted_unique_t, const container_type& cont, const Alloc& a);
17005
+ template<class Alloc>
17006
+ flat_set(sorted_unique_t, const container_type& cont,
17007
+ const key_compare& comp, const Alloc& a);
17008
+ template<class Alloc>
17009
+ flat_set(const key_compare& comp, const Alloc& a);
17010
+ template<class Alloc>
17011
+ explicit flat_set(const Alloc& a);
17012
+ template<class InputIterator, class Alloc>
17013
+ flat_set(InputIterator first, InputIterator last,
17014
+ const key_compare& comp, const Alloc& a);
17015
+ template<class InputIterator, class Alloc>
17016
+ flat_set(InputIterator first, InputIterator last, const Alloc& a);
17017
+ template<@\exposconcept{container-compatible-range}@<value_type> R, class Alloc>
17018
+ flat_set(from_range_t, R&& rg, const Alloc& a);
17019
+ template<@\exposconcept{container-compatible-range}@<value_type> R, class Alloc>
17020
+ flat_set(from_range_t, R&& rg, const key_compare& comp, const Alloc& a);
17021
+ template<class InputIterator, class Alloc>
17022
+ flat_set(sorted_unique_t, InputIterator first, InputIterator last,
17023
+ const key_compare& comp, const Alloc& a);
17024
+ template<class InputIterator, class Alloc>
17025
+ flat_set(sorted_unique_t, InputIterator first, InputIterator last, const Alloc& a);
17026
+ template<class Alloc>
17027
+ flat_set(initializer_list<value_type> il, const key_compare& comp, const Alloc& a);
17028
+ template<class Alloc>
17029
+ flat_set(initializer_list<value_type> il, const Alloc& a);
17030
+ template<class Alloc>
17029
17031
flat_set(sorted_unique_t, initializer_list<value_type> il,
17030
- const key_compare& comp, const Allocator & a);
17031
- template<class Allocator >
17032
- flat_set(sorted_unique_t, initializer_list<value_type> il, const Allocator & a);
17032
+ const key_compare& comp, const Alloc & a);
17033
+ template<class Alloc >
17034
+ flat_set(sorted_unique_t, initializer_list<value_type> il, const Alloc & a);
17033
17035
17034
17036
flat_set& operator=(initializer_list<value_type>);
17035
17037
@@ -17214,23 +17216,25 @@
17214
17216
17215
17217
\pnum
17216
17218
\complexity
17217
- Linear in $N$ if \tcode{cont} is sorted with respect to \exposid{compare} and
17219
+ Linear in $N$ if \tcode{cont} is already sorted with respect to \exposid{compare} and
17218
17220
otherwise $N \log N$, where $N$ is the value of \tcode{cont.size()} before this call.
17219
17221
\end{itemdescr}
17220
17222
17223
+ \rSec3[flat.set.cons.alloc]{Constructors with allocators}
17224
+
17225
+ \pnum
17226
+ The constructors in this subclause shall not participate in overload resolution
17227
+ unless \tcode{uses_allocator_v<container_type, Alloc>} is \tcode{true}.
17228
+
17221
17229
\indexlibraryctor{flat_set}%
17222
17230
\begin{itemdecl}
17223
- template<class Allocator >
17224
- flat_set(const container_type& cont, const Allocator & a);
17225
- template<class Allocator >
17226
- flat_set(const container_type& cont, const key_compare& comp, const Allocator & a);
17231
+ template<class Alloc >
17232
+ flat_set(const container_type& cont, const Alloc & a);
17233
+ template<class Alloc >
17234
+ flat_set(const container_type& cont, const key_compare& comp, const Alloc & a);
17227
17235
\end{itemdecl}
17228
17236
17229
17237
\begin{itemdescr}
17230
- \pnum
17231
- \constraints
17232
- \tcode{uses_allocator_v<container_type, Allocator>} is \tcode{true}.
17233
-
17234
17238
\pnum
17235
17239
\effects
17236
17240
Equivalent to
@@ -17245,18 +17249,14 @@
17245
17249
17246
17250
\indexlibraryctor{flat_set}%
17247
17251
\begin{itemdecl}
17248
- template<class Allocator >
17249
- flat_set(sorted_unique_t s, const container_type& cont, const Allocator & a);
17250
- template<class Allocator >
17252
+ template<class Alloc >
17253
+ flat_set(sorted_unique_t s, const container_type& cont, const Alloc & a);
17254
+ template<class Alloc >
17251
17255
flat_set(sorted_unique_t s, const container_type& cont,
17252
- const key_compare& comp, const Allocator & a);
17256
+ const key_compare& comp, const Alloc & a);
17253
17257
\end{itemdecl}
17254
17258
17255
17259
\begin{itemdescr}
17256
- \pnum
17257
- \constraints
17258
- \tcode{uses_allocator_v<container_type, Allocator>} is \tcode{true}.
17259
-
17260
17260
\pnum
17261
17261
\effects
17262
17262
Equivalent to
@@ -17271,43 +17271,39 @@
17271
17271
17272
17272
\indexlibraryctor{flat_set}%
17273
17273
\begin{itemdecl}
17274
- template<class Allocator >
17275
- flat_set(const flat_set&, const Allocator & a);
17276
- template<class Allocator >
17277
- flat_set(flat_set&&, const Allocator & a);
17278
- template<class Allocator >
17279
- flat_set(const key_compare& comp, const Allocator & a);
17280
- template<class Allocator >
17281
- explicit flat_set(const Allocator & a);
17282
- template<class InputIterator, class Allocator >
17283
- flat_set(InputIterator first, InputIterator last, const key_compare& comp, const Allocator & a);
17284
- template<class InputIterator, class Allocator >
17285
- flat_set(InputIterator first, InputIterator last, const Allocator & a);
17286
- template<@\exposconcept{container-compatible-range}@<value_type> R, class Allocator >
17287
- flat_set(from_range_t, R&& rg, const Allocator & a);
17288
- template<@\exposconcept{container-compatible-range}@<value_type> R, class Allocator >
17289
- flat_set(from_range_t, R&& rg, const key_compare& comp, const Allocator & a);
17290
- template<class InputIterator, class Allocator >
17274
+ template<class Alloc >
17275
+ flat_set(const flat_set&, const Alloc & a);
17276
+ template<class Alloc >
17277
+ flat_set(flat_set&&, const Alloc & a);
17278
+ template<class Alloc >
17279
+ flat_set(const key_compare& comp, const Alloc & a);
17280
+ template<class Alloc >
17281
+ explicit flat_set(const Alloc & a);
17282
+ template<class InputIterator, class Alloc >
17283
+ flat_set(InputIterator first, InputIterator last, const key_compare& comp, const Alloc & a);
17284
+ template<class InputIterator, class Alloc >
17285
+ flat_set(InputIterator first, InputIterator last, const Alloc & a);
17286
+ template<@\exposconcept{container-compatible-range}@<value_type> R, class Alloc >
17287
+ flat_set(from_range_t, R&& rg, const Alloc & a);
17288
+ template<@\exposconcept{container-compatible-range}@<value_type> R, class Alloc >
17289
+ flat_set(from_range_t, R&& rg, const key_compare& comp, const Alloc & a);
17290
+ template<class InputIterator, class Alloc >
17291
17291
flat_set(sorted_unique_t, InputIterator first, InputIterator last,
17292
- const key_compare& comp, const Allocator & a);
17293
- template<class InputIterator, class Allocator >
17294
- flat_set(sorted_unique_t, InputIterator first, InputIterator last, const Allocator & a);
17295
- template<class Allocator >
17296
- flat_set(initializer_list<value_type> il, const key_compare& comp, const Allocator & a);
17297
- template<class Allocator >
17298
- flat_set(initializer_list<value_type> il, const Allocator & a);
17299
- template<class Allocator >
17292
+ const key_compare& comp, const Alloc & a);
17293
+ template<class InputIterator, class Alloc >
17294
+ flat_set(sorted_unique_t, InputIterator first, InputIterator last, const Alloc & a);
17295
+ template<class Alloc >
17296
+ flat_set(initializer_list<value_type> il, const key_compare& comp, const Alloc & a);
17297
+ template<class Alloc >
17298
+ flat_set(initializer_list<value_type> il, const Alloc & a);
17299
+ template<class Alloc >
17300
17300
flat_set(sorted_unique_t, initializer_list<value_type> il,
17301
- const key_compare& comp, const Allocator & a);
17302
- template<class Allocator >
17303
- flat_set(sorted_unique_t, initializer_list<value_type> il, const Allocator & a);
17301
+ const key_compare& comp, const Alloc & a);
17302
+ template<class Alloc >
17303
+ flat_set(sorted_unique_t, initializer_list<value_type> il, const Alloc & a);
17304
17304
\end{itemdecl}
17305
17305
17306
17306
\begin{itemdescr}
17307
- \pnum
17308
- \constraints
17309
- \tcode{uses_allocator_v<container_type, Allocator>} is \tcode{true}.
17310
-
17311
17307
\pnum
17312
17308
\effects
17313
17309
Equivalent to the corresponding non-allocator constructors
0 commit comments