On Mon, 18 May 2026, 08:27 Tomasz Kaminski, <[email protected]> wrote:
> > > On Sun, May 17, 2026 at 9:29 PM Jonathan Wakely <[email protected]> > wrote: > >> This is specified as const in the standard. >> >> libstdc++-v3/ChangeLog: >> >> * include/std/mdspan (mdspan::is_exhaustive): Add const keyword. >> * testsuite/23_containers/mdspan/mdspan.cc: Check that >> is_unique, is_exhaustive, and is_strided can be called on a >> const object. >> --- >> >> Tested x86_64-linux. >> > > >> >> libstdc++-v3/include/std/mdspan | 2 +- >> libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc | 2 +- >> 2 files changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/libstdc++-v3/include/std/mdspan >> b/libstdc++-v3/include/std/mdspan >> index 5938bf09a940..27d15df12944 100644 >> --- a/libstdc++-v3/include/std/mdspan >> +++ b/libstdc++-v3/include/std/mdspan >> @@ -2621,7 +2621,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> { return _PaddedStorage::_M_is_always_exhaustive(); } >> >> constexpr bool >> - is_exhaustive() noexcept >> + is_exhaustive() const noexcept >> { return _M_storage._M_is_exhaustive(); } >> > This is not mdspan, but `layout_left_padded`, and the problem seems to be > repeated in more mappings, and we should fix all of them. Do you want me > to create a follow-up patch with that? I would also backport it to 16. > Oops! Yes, we should fix it everywhere in both branches. >> static constexpr bool >> diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc >> b/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc >> index 62ff7201cce9..99205142579a 100644 >> --- a/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc >> +++ b/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc >> @@ -715,7 +715,7 @@ template<typename Layout, bool Expected> >> test_nothrow_is_methods() >> { >> using Extents = std::extents<int, dyn>; >> - using MDSpan = std::mdspan<double, Extents, Layout>; >> + using MDSpan = const std::mdspan<double, Extents, Layout>; >> static_assert(noexcept(MDSpan::is_always_unique()) == Expected); >> static_assert(noexcept(MDSpan::is_always_exhaustive()) == Expected); >> static_assert(noexcept(MDSpan::is_always_strided()) == Expected); >> -- >> 2.54.0 >> >>
