Tristan Brindle

Results 35 issues of Tristan Brindle

C++20 allows iterators for input ranges to be move-only, for example `std::ranges::basic_istream_view::iterator`. Unfortunately `fmt::join_view` copies iterators in various places, meaning it can't be used with such ranges: ```cpp int main()...

help wanted

I'm using `pqdsort` in my [ranges library](https://github.com/tcbrindle/NanoRange) (slightly modified to support [projections, proxy iterators and `constexpr` evaluation](https://github.com/tcbrindle/NanoRange/blob/master/include/nanorange/detail/algorithm/pdqsort.hpp)). I think it's fantastic, and it's proven almost always faster (and never slower)...

The element type of `flux::cartesian_product`, `cartesian_power` and `adjacent` is a tuple of the element type(s) of the underlying sequences. These three adaptors also provide `*_map` versions, which take an n-ary...

enhancement

C++20 adds the "spaceship" operator which not only gives us three-way comparison, but also provides information about whether a type is strongly, weakly, or only partially ordered. Many Flux algorithms...

We currently have `cartestian_product(seq1, seq2, ...)` which takes a pack of N sequences and yields N-tuples of all the possible combinations of elements from those sequences. This is equivalent to...

enhancement

This was one of the very first adaptors and I just adapted my ranges implementation without thinking about it too much. But how can we bounds check if we don't...

bug

We have several adaptors and algorithms which take a comparator, and require that the comparator produces a strict weak order over the sequence elements: * `find_min`/`find_max`/`find_minmax` * `min`/`max`/`minmax` * `sort`...

enhancement

This PR does a whole lot of things. Firstly, we define some concepts for integers. Specifically, the `flux::num::integral` concept is satisfied by any `std::integral` type *except* `bool`, `char`, `wchar_t` and...

C++23 adds [`std::views::join_with`](https://en.cppreference.com/w/cpp/ranges/join_with_view), which takes a range-of-ranges and a pattern and produces the elements of the inner ranges with the pattern interspersed. We should have it too. As always though,...

enhancement

This is an experimental PR to try out the ideas in #99, namely replacing the existing `for_each_while(seq, pred) -> cursor_t` customisation point with a new pair of customisation points: ```cpp...