First off many thanks to Matt for contributing this library, this is a fairly quick "drive by" review, hopefully others will delve deeper, although as noted below that's hardly needed, given that the interface is pretty much fixed ahead of time.
Other questions you might want to answer in your review are: - What is your evaluation of the design?
It's an integer, there's not much to discuss to be honest. Indeed for an integer type, it's almost overly-feature complete, but complaining about that is churlish to be honest. One random question: I wonder if any consideration was given to making integers with checked or saturating operations separate types? I appreciate that this is NOT the way the standard has gone, but it looks useful to me, maybe that's a whole other library though? Likewise while we're on the subject of providing a poly-filler, some of the algorithms (<numeric> for example) could usefully be extended to all the integer types (as per C++26), but again that looks like another library to me. While on the subject of completeness, I'm pleased to see device support (CUDA/Sycl) straight out of the box. This is not necessarily a question for Matt, but I'm wondering if there might be any good example algorithms that would make use of this and provide some kind of benchmark and/or indication of when using parallel computing is actually useful?
- What is your evaluation of the implementation? Only a very quick look, but Matt knows what he's doing, and this library has been used out in the wild for a while now. - What is your evaluation of the documentation? Excellent and very easy to read. - What is your evaluation of the potential usefulness of the library?
What can I say, in some ways this is a poly-filler library which may not be needed... or may be essential depending on your platform/compiler. In any case I vote to ACCEPT this library. I hope others will take the time to look through this too. Best, John Maddock.