<mdspan>: extents improvements
#3786
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
_STL_VERIFYwith#if _CONTAINER_DEBUG_LEVEL > 0(towards<mdspan>: Completely reworkstd::extents#3586 (comment)). I believe that this is the best solution, because:extents' constructors:extents(other extents)constructor avoids usingforloop and usesindex_sequenceinstead,extents(exts...)constructor avoids creating temporary arrays and usingforloop. Instead, it putsexts...in a tuple and then constructs_Dynamic_extentsarray directly,extents(exts...)now always checks elements inextswhen it is possible. Previously it checked element when all elements were "checkable" (wereintegral),extents(span/array)is more efficient._(Fwd/Rev)_prod_of_extents,std::minintest_mdspan_support.hpp,extents(exts...)'s behaviour.