Skip to content

Commit 476a5f3

Browse files
fix test
1 parent 265621c commit 476a5f3

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

libcxx/test/std/ranges/range.adaptors/range.common.view/begin.pass.cpp

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,30 +25,16 @@ struct MutableView : std::ranges::view_base {
2525
sentinel_wrapper<int*> end();
2626
};
2727

28-
template <class T>
29-
concept HasConstBegin = requires(const T& ct) { ct.begin(); };
30-
31-
template <class T>
32-
concept HasBegin = requires(T& t) { t.begin(); };
33-
34-
template <class T>
35-
concept HasConstAndNonConstBegin = HasConstBegin<T> && requires(T& t, const T& ct) {
36-
requires !std::same_as<decltype(t.begin()), decltype(ct.begin())>;
37-
};
38-
39-
template <class T>
40-
concept HasOnlyNonConstBegin = HasBegin<T> && !HasConstBegin<T>;
41-
42-
template <class T>
43-
concept HasOnlyConstBegin = HasConstBegin<T> && !HasConstAndNonConstBegin<T>;
28+
template<class View>
29+
concept BeginEnabled = requires(View v) { v.begin(); };
4430

4531
constexpr bool test() {
4632
int buf[8] = {1, 2, 3, 4, 5, 6, 7, 8};
4733

4834
{
49-
static_assert( HasBegin<std::ranges::common_view<CopyableView> const&>);
50-
static_assert( HasBegin<std::ranges::common_view<MutableView>&>);
51-
static_assert(!HasBegin<std::ranges::common_view<MutableView> const&>);
35+
static_assert( BeginEnabled<std::ranges::common_view<CopyableView> const&>);
36+
static_assert( BeginEnabled<std::ranges::common_view<MutableView>&>);
37+
static_assert(!BeginEnabled<std::ranges::common_view<MutableView> const&>);
5238
}
5339

5440
{

libcxx/test/std/ranges/range.adaptors/range.common.view/types.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,22 @@ struct NonCommonView : std::ranges::view_base {
9090
static_assert( std::ranges::view<NonCommonView>);
9191
static_assert(!std::ranges::common_range<NonCommonView>);
9292

93+
template <class T>
94+
concept HasConstBegin = requires(const T& ct) { ct.begin(); };
95+
96+
template <class T>
97+
concept HasBegin = requires(T& t) { t.begin(); };
98+
99+
template <class T>
100+
concept HasConstAndNonConstBegin = HasConstBegin<T> && requires(T& t, const T& ct) {
101+
requires !std::same_as<decltype(t.begin()), decltype(ct.begin())>;
102+
};
103+
104+
template <class T>
105+
concept HasOnlyNonConstBegin = HasBegin<T> && !HasConstBegin<T>;
106+
107+
template <class T>
108+
concept HasOnlyConstBegin = HasConstBegin<T> && !HasConstAndNonConstBegin<T>;
93109

94110
template<bool Simple>
95111
struct NonCommonBaseView: std::ranges::view_base {
@@ -103,4 +119,10 @@ struct NonCommonBaseView: std::ranges::view_base {
103119
};
104120
using NonSimpleNonCommonView = NonCommonBaseView<false>;
105121

122+
static_assert(!HasOnlyNonConstBegin<std::ranges::common_view<const NonSimpleNonCommonView>>);
123+
static_assert(!HasOnlyConstBegin<std::ranges::common_view<NonSimpleNonCommonView>>);
124+
static_assert(HasConstAndNonConstBegin<std::ranges::common_view<NonSimpleNonCommonView>>);
125+
static_assert(HasConstBegin<std::ranges::common_view<const NonSimpleNonCommonView>>);
126+
static_assert(HasOnlyConstBegin<std::ranges::common_view<const NonSimpleNonCommonView>>);
127+
106128
#endif // TEST_STD_RANGES_RANGE_ADAPTORS_RANGE_COMMON_VIEW_TYPES_H

0 commit comments

Comments
 (0)