<mdspan>: Product code review
#3971
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.
mdspan::is_always_MEOW().mapping_type::is_always_MEOW()which is required to be a constant expression of typebool(N4950 [mdspan.mdspan.overview]/3, [mdspan.layout.policy.reqmts]/1, [mdspan.layout.reqmts]/22,24,26). The Standard should simply be enhanced to saynoexcepthere.constexpr bool _Resultto make this extra clear and improve debug codegen._Access_impl()is_Ugly.const _OtherIndexType&in this constraint.default_accessor, defineaccess()beforeoffset()to follow the order of N4950 [mdspan.accessor.default.overview].layout_stride::template mappingis unnecessary;layout_strideis not a template.explicitto the deduction guideextents(_Integrals...), depicted by N4950 [mdspan.extents.overview] and [mdspan.extents.cons]/12._Contains_multidimensional_index()to match its function parameters; it's always called with template argument deduction.operator[]forspan/array. Fine-grained commits for clarity:_Multidimensional_access()up.noexceptto_Multidimensional_access(), not commented as strengthened because it's_Ugly.as_const()to thearrayoverload, so it exactly matches thespanoverload.const array&has the same effect), but adding this will make the following unification clearer._Multidimensional_subscript().arrayin aspan.noexceptto_Multidimensional_subscript(not commented, it's_Ugly), then strengthenoperator[]forspan/array.span/arraysubscript operators up to parity with the multidimensional subscript operator.