summaryrefslogtreecommitdiff
path: root/lib/collections.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2025-02-15 14:46:48 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2025-02-15 14:46:48 +0000
commit619983e949fde226cc7a3de0bc198fdcee3fe3b4 (patch)
tree4599b5c8440d6ae80d03a3d87985053a5c104670 /lib/collections.h
parentRange adaptor to make triangle strip triples (diff)
downloadilt-619983e949fde226cc7a3de0bc198fdcee3fe3b4.tar.bz2
ilt-619983e949fde226cc7a3de0bc198fdcee3fe3b4.tar.xz
ilt-619983e949fde226cc7a3de0bc198fdcee3fe3b4.zip
Fixes and tests to new range helpers
Diffstat (limited to 'lib/collections.h')
-rw-r--r--lib/collections.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/collections.h b/lib/collections.h
index c81bede..27eff0a 100644
--- a/lib/collections.h
+++ b/lib/collections.h
@@ -251,15 +251,19 @@ strip_end(IterableCollection auto & cont)
return stripiter {cont.end()};
}
-struct TriangleTriplesImpl : public std::ranges::range_adaptor_closure<TriangleTriplesImpl> {
+inline constexpr auto dereference = std::views::transform([](const auto & iter) -> decltype(auto) {
+ return *iter;
+});
+
+struct TriangleTriples : public std::ranges::range_adaptor_closure<TriangleTriples> {
decltype(auto)
operator()(const auto & triangleStrip) const
{
- return std::views::iota(strip_begin(triangleStrip), strip_end(triangleStrip));
+ return std::views::iota(strip_begin(triangleStrip), strip_end(triangleStrip)) | dereference;
}
};
-constexpr TriangleTriplesImpl TriangleTriples;
+inline constexpr TriangleTriples triangleTriples;
template<typename T, typename Dist, typename Merger>
void