On Thu, 15 May 2025 at 16:12, Jonathan Wakely <jwakely....@gmail.com> wrote:
>
> On Thu, 15 May 2025 at 16:11, Luc Grosheintz <luc.groshei...@gmail.com> wrote:
> >
> > Without would make sense to me, because whenever I wrote an
> > identifier with _ I felt like I was presenting the user with
> > a name that they shouldn't know about.
> >
> > A pedantic question: Can I also fix the line below, or do
> > you prefer to be strict about one semantic change per commit?
>
> We don't need to be that strict. Don't worry, I've already changed it
> locally and will push it for you.

To be clear, we do prefer separate changes to be separate commits, but
I think "add a static assert and tweak the one on the line below" is
fine to consider as a single change.


>
>
> >
> > On 5/15/25 2:40 PM, Tomasz Kaminski wrote:
> > > No strong preference, but Ville's argument sounds reasonable.
> > >
> > > On Thu, May 15, 2025 at 12:25 PM Ville Voutilainen <
> > > ville.voutilai...@gmail.com> wrote:
> > >
> > >> Mild preference against; use the names from the standard, not the
> > >> implementation, in such diagnostics.
> > >>
> > >> to 15. toukok. 2025 klo 13.20 Jonathan Wakely <jwak...@redhat.com>
> > >> kirjoitti:
> > >>
> > >>> On Thu, 15 May 2025 at 11:14, Jonathan Wakely <jwak...@redhat.com> 
> > >>> wrote:
> > >>>>
> > >>>> On Wed, 14 May 2025 at 20:18, Luc Grosheintz <luc.groshei...@gmail.com>
> > >>> wrote:
> > >>>>>
> > >>>>> The standard states that the IndexType must be a signed or unsigned
> > >>>>> integer. This mandate was implemented using `std::is_integral_v`.
> > >>> Which
> > >>>>> also includes (among others) char and bool, which neither signed nor
> > >>>>> unsigned integers.
> > >>>>>
> > >>>>> libstdc++-v3/ChangeLog:
> > >>>>>
> > >>>>>          * include/std/mdspan: Implement the mandate for extents as
> > >>>>>          signed or unsigned integer and not any interal type.
> > >>>>>          *
> > >>> testsuite/23_containers/mdspan/extents/class_mandates_neg.cc: Check
> > >>>>>          that extents<char,...> and extents<bool,...> are invalid.
> > >>>>>          * testsuite/23_containers/mdspan/extents/misc.cc: Update
> > >>>>>          tests to avoid `char` and `bool` as IndexType.
> > >>>>> ---
> > >>>>>   libstdc++-v3/include/std/mdspan                        |  3 ++-
> > >>>>>   .../23_containers/mdspan/extents/class_mandates_neg.cc | 10
> > >>> +++++++---
> > >>>>>   .../testsuite/23_containers/mdspan/extents/misc.cc     |  8 ++++----
> > >>>>>   3 files changed, 13 insertions(+), 8 deletions(-)
> > >>>>>
> > >>>>> diff --git a/libstdc++-v3/include/std/mdspan
> > >>> b/libstdc++-v3/include/std/mdspan
> > >>>>> index aee96dda7cd..22509d9c8f4 100644
> > >>>>> --- a/libstdc++-v3/include/std/mdspan
> > >>>>> +++ b/libstdc++-v3/include/std/mdspan
> > >>>>> @@ -163,7 +163,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> > >>>>>     template<typename _IndexType, size_t... _Extents>
> > >>>>>       class extents
> > >>>>>       {
> > >>>>> -      static_assert(is_integral_v<_IndexType>, "_IndexType must be
> > >>> integral.");
> > >>>>> +      static_assert(__is_standard_integer<_IndexType>::value,
> > >>>>> +                   "_IndexType must be a signed or unsigned
> > >>> integer.");
> > >>>>
> > >>>> GCC's diagnostics never end with a full stop (aka period), and we
> > >>>> follow that convention for our static assertions.
> > >>>>
> > >>>> So I'll remove the '.' at the end of the string literal, and then push
> > >>>> this to trunk.
> > >>>>
> > >>>>
> > >>>>>         static_assert(
> > >>>>>            (__mdspan::__valid_static_extent<_Extents, _IndexType> &&
> > >>> ...),
> > >>>>>            "Extents must either be dynamic or representable as
> > >>> _IndexType");
> > >>>
> > >>> I've just noticed that this static_assert refers to "Extents" without
> > >>> the leading underscore, but "_IndexType" with a leading underscore.
> > >>>
> > >>> I think it's OK to omit the leading underscore, it might be a bit more
> > >>> user-friendly and I don't think anybody will be confused by the fact
> > >>> it's not identical to the real template parameter. But we should
> > >>> either do it consistently for _Extents and _IndexType or for neither
> > >>> of them.
> > >>>
> > >>> Anybody want to argue for or against underscores?
> > >>>
> > >>>
> > >
> >

Reply via email to