Skip to content

Commit dd8767b

Browse files
[libc++][test] Clean-up MinSequenceContainer (#158432)
Follows-up #158344. - Guard range-related functions with `TEST_STD_VER >= 23`. - Mark range-related functions unconditionally `constexpr`. - Add `TEST_CONSTEXPR_CXX20` to one `operator=`. This will make `MinSequenceContainer` more consistent and useful for legacy container adaptors or C++26 `constexpr` additions. Although we're currently only using it with flat container adaptors.
1 parent 1d27e66 commit dd8767b

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

libcxx/test/support/MinSequenceContainer.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,26 @@ 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+
#if TEST_STD_VER >= 23
3233
template <class Range>
33-
TEST_CONSTEXPR_CXX20 MinSequenceContainer(std::from_range_t, Range&& rg)
34-
: data_(std::from_range, std::forward<Range>(rg)) {}
34+
constexpr MinSequenceContainer(std::from_range_t, Range&& rg) : data_(std::from_range, std::forward<Range>(rg)) {}
35+
#endif
3536
TEST_CONSTEXPR_CXX20 MinSequenceContainer(size_type n, T value) : data_(n, value) {}
3637

37-
MinSequenceContainer& operator=(std::initializer_list<T> il) { data_ = il; }
38+
TEST_CONSTEXPR_CXX20 MinSequenceContainer& operator=(std::initializer_list<T> il) { data_ = il; }
3839

3940
template <class It>
4041
TEST_CONSTEXPR_CXX20 void assign(It first, It last) {
4142
data_.assign(first, last);
4243
}
4344
TEST_CONSTEXPR_CXX20 void assign(std::initializer_list<T> il) { data_.assign(il); }
4445
TEST_CONSTEXPR_CXX20 void assign(size_type n, value_type t) { data_.assign(n, t); }
46+
#if TEST_STD_VER >= 23
4547
template <class Range>
46-
TEST_CONSTEXPR_CXX20 void assign_range(Range&& rg) {
48+
constexpr void assign_range(Range&& rg) {
4749
data_.assign_range(std::forward<Range>(rg));
4850
}
51+
#endif
4952
TEST_CONSTEXPR_CXX20 iterator begin() { return iterator(data_.data()); }
5053
TEST_CONSTEXPR_CXX20 const_iterator begin() const { return const_iterator(data_.data()); }
5154
TEST_CONSTEXPR_CXX20 const_iterator cbegin() const { return const_iterator(data_.data()); }
@@ -73,10 +76,12 @@ struct MinSequenceContainer {
7376
return from_vector_iterator(data_.insert(to_vector_iterator(p), il));
7477
}
7578

79+
#if TEST_STD_VER >= 23
7680
template <class Range>
77-
TEST_CONSTEXPR_CXX20 iterator insert_range(const_iterator p, Range&& rg) {
81+
constexpr iterator insert_range(const_iterator p, Range&& rg) {
7882
return from_vector_iterator(data_.insert_range(to_vector_iterator(p), std::forward<Range>(rg)));
7983
}
84+
#endif
8085

8186
TEST_CONSTEXPR_CXX20 iterator erase(const_iterator first, const_iterator last) {
8287
return from_vector_iterator(data_.erase(to_vector_iterator(first), to_vector_iterator(last)));

0 commit comments

Comments
 (0)