-
Notifications
You must be signed in to change notification settings - Fork 81
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE] views::zip #2971
[FEATURE] views::zip #2971
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Codecov Report
@@ Coverage Diff @@
## master #2971 +/- ##
==========================================
+ Coverage 98.14% 98.18% +0.03%
==========================================
Files 269 272 +3
Lines 11783 11991 +208
==========================================
+ Hits 11565 11773 +208
Misses 218 218
Continue to review full report at Codecov.
|
@seqan/core Edit: Fixed by handling Click for previous postI had to change some concept in the alignment code to make gcc10 work: template <typename t>
concept indexed_sequence_pair_range =
#if defined(__GNUC__) && (__GNUC__ == 10)
true;
#else
std::ranges::forward_range<t> &&
requires (std::ranges::range_value_t<t> value)
{
requires tuple_like<decltype(value)>;
requires std::tuple_size_v<decltype(value)> == 2;
requires sequence_pair<std::tuple_element_t<0, decltype(value)>>;
requires std::copy_constructible<std::tuple_element_t<1, decltype(value)>>;
};
#endif This concept is quite ubiquitous in the alignment code (though it also compiles fine if you just use We also have a type trait template <typename sequence_pairs_t>
//!\cond
requires sequence_pair_range<std::remove_reference_t<sequence_pairs_t>>
//!\endcond
struct chunked_indexed_sequence_pairs
{
//!\brief The transformed type that models seqan3::detail::indexed_sequence_pair_range.
using type = decltype(views::zip(std::declval<sequence_pairs_t>(), std::views::iota(0)) | views::chunk(1));
}; In short,
The type is something like My guess is that there's something in range-v3 that "collapses" the views and returns the value type of the zip view. I would just deactivate the concept on gcc10 and revisit it once we have a chunk_view implementation. |
2528a9e
to
0e7109f
Compare
647a963
to
acdcf41
Compare
However, I'm happy to revisit the namespace stuff (maybe after the join view is in seqan3). But for now, I really want to keep it separated from the rest of seqan3. |
include/seqan3/utility/views/zip.hpp
Outdated
|
||
namespace seqan3::views | ||
{ | ||
|
||
/*!\brief A zip view | ||
/*!\brief A view adaptor that produces a tuple-like value of all passed views. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
taken from the std documentation :)
/*!\brief A view adaptor that produces a tuple-like value of all passed views. | |
/*!\brief A view adaptor that takes several views and returns tuple-like values from every i-th element of each view. |
?
I think your sentence sounds like it forms a tuple of views, not a tuple of view elements.
Follow-up:
explicit
andnoexcept
specifiers forcommon_pair
andcommon_tuple