C++ Logo

std-proposals

Advanced search

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

From: Hewill Kang <hewillk_at_[hidden]>
Date: Sat, 4 Apr 2026 11:54:22 +0800
Thank you, that makes sense.
I updated the paper.




Mark Hoemmen <mark.hoemmen_at_[hidden]> 於 2026年4月4日週六 上午3:16寫道:

> 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-04 03:54:36