Skip to content

Commit a7c963a

Browse files
authored
[libc++][test] update MinSequenceContainer.h to make one more test pass on MSVC STL (#158344)
Continues #140287 `from_range_t` constructor is needed by MSVC STL to pass `std/containers/container.adaptors/flat.set/flat.set.cons/range.pass.cpp`. The rest are added to complete the container according to #140287 (review).
1 parent ef7e03a commit a7c963a

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

libcxx/test/support/MinSequenceContainer.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,23 @@ struct MinSequenceContainer {
2929
template <class It>
3030
explicit TEST_CONSTEXPR_CXX20 MinSequenceContainer(It first, It last) : data_(first, last) {}
3131
TEST_CONSTEXPR_CXX20 MinSequenceContainer(std::initializer_list<T> il) : data_(il) {}
32+
template <class Range>
33+
TEST_CONSTEXPR_CXX20 MinSequenceContainer(std::from_range_t, Range&& rg)
34+
: data_(std::from_range, std::forward<Range>(rg)) {}
35+
TEST_CONSTEXPR_CXX20 MinSequenceContainer(size_type n, T value) : data_(n, value) {}
36+
37+
MinSequenceContainer& operator=(std::initializer_list<T> il) { data_ = il; }
3238

3339
template <class It>
3440
TEST_CONSTEXPR_CXX20 void assign(It first, It last) {
3541
data_.assign(first, last);
3642
}
3743
TEST_CONSTEXPR_CXX20 void assign(std::initializer_list<T> il) { data_.assign(il); }
3844
TEST_CONSTEXPR_CXX20 void assign(size_type n, value_type t) { data_.assign(n, t); }
45+
template <class Range>
46+
TEST_CONSTEXPR_CXX20 void assign_range(Range&& rg) {
47+
data_.assign_range(std::forward<Range>(rg));
48+
}
3949
TEST_CONSTEXPR_CXX20 iterator begin() { return iterator(data_.data()); }
4050
TEST_CONSTEXPR_CXX20 const_iterator begin() const { return const_iterator(data_.data()); }
4151
TEST_CONSTEXPR_CXX20 const_iterator cbegin() const { return const_iterator(data_.data()); }
@@ -55,6 +65,14 @@ struct MinSequenceContainer {
5565
return from_vector_iterator(data_.insert(to_vector_iterator(p), std::move(value)));
5666
}
5767

68+
TEST_CONSTEXPR_CXX20 iterator insert(const_iterator p, size_type n, T value) {
69+
return from_vector_iterator(data_.insert(to_vector_iterator(p), n, value));
70+
}
71+
72+
TEST_CONSTEXPR_CXX20 iterator insert(const_iterator p, std::initializer_list<T> il) {
73+
return from_vector_iterator(data_.insert(to_vector_iterator(p), il));
74+
}
75+
5876
template <class Range>
5977
TEST_CONSTEXPR_CXX20 iterator insert_range(const_iterator p, Range&& rg) {
6078
return from_vector_iterator(data_.insert_range(to_vector_iterator(p), std::forward<Range>(rg)));

0 commit comments

Comments
 (0)