Title
`layout_stride::is_exhaustive` specification is problematic when there's an extent equal to 1
Status
new
Section
[mdspan.layout.stride.obs]
Submitter
S. B. Tam

Created on 2026-03-29.00:00:00 last changed 3 weeks ago

Messages

Date: 2026-03-29.00:00:00

Consider

constexpr std::extents ext{2, 1, 2};
constexpr std::array stride{1, 5, 2};
constexpr std::layout_stride::mapping lsm(ext, stride);

static_assert(lsm.is_exhaustive());

Implementations disagree on the result of `lsm.is_exhaustive()`: `true` on libstdc++ and libc++, `false` on MSVC STL.

github.com/microsoft/STL/#5477 claims that the mapping is exhaustive in this case, but [mdspan.layout.stride.obs]/6.2 requires this function to return `false`.

Should `is_exhaustive` be made to return `true` in this case (which is more correct and also easier to implement)?

History
Date User Action Args
2026-03-29 00:00:00admincreate