Closed eyalroz closed 2 years ago
I don't want to speak for the main mdspan
developers, but as far as I know, the only intended differences between the implementation and the proposed standard come from wanting the implementation to work with earlier C++ language versions. I think it's OK to report any missing features in the implementation as bugs.
I wasn't asking for an explanation here, I'm saying that people finding this repo for the first time would be wondering "How is this different from XYZ?" and the README should have the answer.
@eyalroz This is the first I've heard of GSL multi_span
. As far as I can tell, it's deprecated and mostly hasn't been touched in four years. Are you aware of any widespread use of multi_span
that would make this a useful point of comparison? I get what your saying, but even to go through every popular multi-dimensional array implementation in a "How is this different from XYZ?" would be a pretty substantial task.
@dhollman : GSL is an implementation of the C++ Core Guidelines Support Library. The guidelines are a project started by Bjarne, Herb and other committee members several years ago, and the GSL is a bunch of stuff found useful by the guidelines which doesn't/didn't exist in the standard library.
Microsoft's GSL implementation is quite popular, as you can tell by its number of stars. I don't know how popular its multispan is specifically, since there are no stats for that. I do believe it's the second most popular, so I'm only suggesting writing a "how is this different from" from the two most popular ones.
Yeah, I'm of course aware of the GSL and the C++ Core Guidelines, and I've read and used both quite extensively. I'm just saying that even though I'm quite familiar with the GSL, this is the first I've heard of multi_span, which doesn't bode well for it's usage. The fact that the entirety of the interface for multi_span is marked deprecated in the latest GSL also isn't a good sign. I've talked with core guidelines authors about mdspan
and never heard anyone mention multi_span
. In a quick search of GitHub, the only uses I could find of multi_span
were in GSL test suites that people had copied into their code bases from the GSL repo.
But all of that said, you make a good point—this is a predecessor to mdspan
in that it is committee-tangential and related. I'll look through what Microsoft wrote four years ago and see if I can quickly summarize some key differences.
Even a non-exhaustive "this is quite unlike GSL::multi_span
, for example in X and Y and Z" would be ok IMHO.
The README should make it clear how this implementation is different from what's going into the standard (if it's different), and from the GSL multi-dimensional span, multispan (or at least MS GSL).