diff --git a/include/seqan3/contrib/std/chunk_view.hpp b/include/seqan3/contrib/std/chunk_view.hpp index 56cc7d0797..13ab581b74 100644 --- a/include/seqan3/contrib/std/chunk_view.hpp +++ b/include/seqan3/contrib/std/chunk_view.hpp @@ -172,7 +172,7 @@ class chunk_view::outer_iterator return *x.parent_->current_ == std::ranges::end(x.parent_->base_) && x.parent_->remainder_ != 0; } - friend constexpr difference_type operator-(std::default_sentinel_t y, outer_iterator const & x) + friend constexpr difference_type operator-(std::default_sentinel_t, outer_iterator const & x) requires std::sized_sentinel_for, std::ranges::iterator_t> { auto const dist = std::ranges::end(x.parent_->base_) - *x.parent_->current_; @@ -269,7 +269,7 @@ class chunk_view::inner_iterator return x.parent_->remainder_ == 0; } - friend constexpr difference_type operator-(std::default_sentinel_t y, inner_iterator const & x) + friend constexpr difference_type operator-(std::default_sentinel_t, inner_iterator const & x) requires std::sized_sentinel_for, std::ranges::iterator_t> { std::ranges::min(x.parent_->remainder_, std::ranges::end(x.parent_->base_) - *x.parent_->current_); @@ -571,7 +571,7 @@ class chunk_view::iterator return (x.current_ - y.current_ + x.missing_ - y.missing_) / x.n_; } - friend constexpr difference_type operator-(std::default_sentinel_t y, iterator const & x) + friend constexpr difference_type operator-(std::default_sentinel_t, iterator const & x) requires std::sized_sentinel_for, std::ranges::iterator_t> { return seqan::stl::detail::chunk::div_ceil(x.end_ - x.current_, x.n_); diff --git a/include/seqan3/contrib/std/join_with_view.hpp b/include/seqan3/contrib/std/join_with_view.hpp index 0b09c9f15c..d83b5b1561 100644 --- a/include/seqan3/contrib/std/join_with_view.hpp +++ b/include/seqan3/contrib/std/join_with_view.hpp @@ -88,10 +88,10 @@ class join_with_view : Pattern pattern_{}; template - struct iterator; + class iterator; template - struct sentinel; + class sentinel; public: join_with_view() diff --git a/include/seqan3/contrib/std/zip_view.hpp b/include/seqan3/contrib/std/zip_view.hpp index b7913644fa..653014eb8b 100644 --- a/include/seqan3/contrib/std/zip_view.hpp +++ b/include/seqan3/contrib/std/zip_view.hpp @@ -16,7 +16,8 @@ #include -#ifdef __cpp_lib_ranges_zip +// https://godbolt.org/z/YW7e785sd +#if defined __cpp_lib_ranges_zip && !defined(__clang__) namespace seqan::stl::views { @@ -541,7 +542,7 @@ struct zip_fn { template requires (sizeof...(urng_ts) == 0) - constexpr auto operator()(urng_ts &&... ranges) const + constexpr auto operator()(urng_ts &&...) const { return std::views::empty>; }