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
>>
>>

Reply via email to