On 17/06/2019 15:40, Hans Dembinski wrote:
Dear degski and Niall,
On 17. Jun 2019, at 14:24, Niall Douglas via Boost
wrote: Save yourself the trouble and just fork and maintain https://github.com/tcbrindle/span . It's already released under BSL-1.0, so no problems there either. Then there's another one, https://github.com/martinmoene/span-lite, equally BSL-1.0. It appears std::mdspan is slightly more of a challenge.
+1. They're Boost licensed, and Boost friendly authors to boot.
thank you for the pointers. I will check their implementations. Do you know why were these not proposed/accepted for inclusion in Boost?
Almost certainly because they lack the time, patience, and fortitude of will. But you'd have to ask them.
I personally use span-lite. It works well on C++ 98, incidentally.
In C++ 98 and without decltype and declval, it is more difficult to restrict the overloads of the templated constructors of span, I have to see how they do that.
I've fired it into C++ 98 codebases and it "just worked". I don't doubt there will be some corner case gotchas.
In any case, implementation is easy, it'll be the documentation which is hard, as always.
For a clone of std::span, one can base the documentation on cppreference.com, which is better than developing from scratch.
I suspect the tutorial will be the most painful part. Like, when and why to use string_view vs span vs iterator pairs vs range vs pointers? Niall