C++ Logo

std-proposals

Advanced search

Re: [std-proposals] `random_access_iterator_accessor` for `std::mdspan`?

From: Mark Hoemmen <mark.hoemmen_at_[hidden]>
Date: Fri, 3 Apr 2026 13:16:23 -0600
On Fri, Apr 3, 2026 at 11:27 AM Hewill Kang <hewillk_at_[hidden]> wrote:
>>
>> Also, iterator_accessor has to deal with pointers as a special case of
>> iterators, so it should have the same safeguard as default_accessor and
>> friends against converting a pointer-to-derived to a pointer-to-base.
>
>
> That's reasonable, thank you. I updated the paper.
>
> This is the current final version of the paper: https://isocpp.org/files/papers/P4173R0.html
> And implementation with libstdc++: https://godbolt.org/z/86MKa3oa5

Would you consider making those conversion operators to
`default_accessor` explicit?

I ask because container authors sometimes provide iterators that model
`contiguous_iterator` but do run-time bounds checking. Implicit
conversion from `iterator_accessor` to `default_accessor` would
silently strip away this protection.

Thanks!
mfh


>
> Thanks.
> Hewill
>
> Ell <ell.ell.se_at_[hidden]> 於 2026年4月3日週五 上午2:48寫道:
>>
>> On Thursday, April 2nd, 2026 at 8:24 PM, Mark Hoemmen via Std-Proposals <std-proposals_at_[hidden]> wrote:
>>
>> > >> Have you considered adding converting constructors so that users can
>> > >> go from an iterator-to-nonconst to an iterator-to-const?
>> > >
>> > > The proposed wording has the following converting constructors:
>> > >
>> > > template<convertible_to<I> I2>
>> > > constexpr iterator_accessor(iterator_accessor<I2>) noexcept {}
>> > >
>> > > I think it's enough to cover it?
>> >
>> > The analog of this is enough for `default_accessor`, but that only has
>> > to deal with pointers. If I is constructible from I2, but I2 is not
>> > convertible to I, then the same should be true of the accessor. As a
>> > result, mdspan conversion would work in the same way as accessor
>> > conversion. This is the design intent of mdspan.
>> >
>>
>> Also, iterator_accessor has to deal with pointers as a special case of
>> iterators, so it should have the same safeguard as default_accessor and
>> friends against converting a pointer-to-derived to a pointer-to-base.

Received on 2026-04-03 19:16:36