diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2025-02-15 14:46:48 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2025-02-15 14:46:48 +0000 |
commit | 619983e949fde226cc7a3de0bc198fdcee3fe3b4 (patch) | |
tree | 4599b5c8440d6ae80d03a3d87985053a5c104670 /lib/collections.h | |
parent | Range adaptor to make triangle strip triples (diff) | |
download | ilt-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.h | 10 |
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 |