Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
ci
  • Loading branch information
huixie90 committed Jul 19, 2025
commit 0de1e4d08605b9a0c4a83798fd5093f6ca77bf8c
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ void testCTAD() {
static_assert(std::is_same_v<decltype(std::ranges::zip_transform_view(Fn{}, Container{})),
std::ranges::zip_transform_view<Fn, std::ranges::owning_view<Container>>>);

static_assert(std::is_same_v<decltype(std::ranges::zip_transform_view(Fn{}, Container{}, View{})),
std::ranges::zip_transform_view<Fn, std::ranges::owning_view<Container>, View>>);
static_assert(std::is_same_v<decltype(std::ranges::zip_transform_view(Fn{}, Container{}, IntView{})),
std::ranges::zip_transform_view<Fn, std::ranges::owning_view<Container>, IntView>>);

Container c{};
static_assert(
std::is_same_v<
decltype(std::ranges::zip_transform_view(Fn{}, Container{}, View{}, c)),
decltype(std::ranges::zip_transform_view(Fn{}, Container{}, IntView{}, c)),
std::ranges::
zip_transform_view<Fn, std::ranges::owning_view<Container>, View, std::ranges::ref_view<Container>>>);
zip_transform_view<Fn, std::ranges::owning_view<Container>, IntView, std::ranges::ref_view<Container>>>);
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ template <class T, class... Args>
concept IsImplicitlyConstructible = requires(T val, Args... args) { val = {std::forward<Args>(args)...}; };

// test constructor is explicit
static_assert(std::constructible_from<std::ranges::zip_transform_view<Fn, View>, Fn, View>);
static_assert(!IsImplicitlyConstructible<std::ranges::zip_transform_view<Fn, View>, Fn, View>);
static_assert(std::constructible_from<std::ranges::zip_transform_view<Fn, IntView>, Fn, IntView>);
static_assert(!IsImplicitlyConstructible<std::ranges::zip_transform_view<Fn, IntView>, Fn, IntView>);

static_assert(std::constructible_from<std::ranges::zip_transform_view<Fn, View, View>, Fn, View, View>);
static_assert(!IsImplicitlyConstructible<std::ranges::zip_transform_view<Fn, View, View>, Fn, View, View>);
static_assert(std::constructible_from<std::ranges::zip_transform_view<Fn, IntView, IntView>, Fn, IntView, IntView>);
static_assert(!IsImplicitlyConstructible<std::ranges::zip_transform_view<Fn, IntView, IntView>, Fn, IntView, IntView>);

struct MoveAwareView : std::ranges::view_base {
int moves = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,17 +83,14 @@ constexpr bool test() {
int b[] = {5, 6, 7, 8, 9};
auto r = std::views::zip_transform(MakeTuple{}, Subrange(It(a), It(a + 4)), Subrange(It(b), It(b + 5)));
auto iter1 = r.begin();
using Iter = decltype(iter1);
#ifndef _LIBCPP_VERSION
// libc++ hasn't implemented LWG-3692 "zip_transform_view::iterator's operator<=> is overconstrained"
auto iter2 = iter1 + 1;

compareOperatorTest(iter1, iter2);
using Iter = decltype(iter1);
static_assert(std::three_way_comparable<Iter>);
assert((iter1 <=> iter2) == std::strong_ordering::less);
assert((iter1 <=> iter1) == std::strong_ordering::equal);
assert((iter2 <=> iter1) == std::strong_ordering::greater);
#endif
}

{
Expand Down
Comment thread
huixie90 marked this conversation as resolved.
Outdated
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
# error "range.zip.transform/types.h" can only be included in builds supporting C++20
#endif // TEST_STD_VER <= 20

struct View : std::ranges::view_base {
struct IntView : std::ranges::view_base {
int* begin() const;
int* end() const;
};
Expand Down