On Wed, 10 Sept 2025 at 11:08, Luc Grosheintz <luc.groshei...@gmail.com> wrote:
>
>
>
> On 9/10/25 11:24 AM, Jonathan Wakely wrote:
> > On Wed, 10 Sept 2025 at 09:44, Jonathan Wakely <jwak...@redhat.com> wrote:
> >>
> >> On Wed, 10 Sept 2025 at 07:49, Luc Grosheintz <luc.groshei...@gmail.com> 
> >> wrote:
> >>>
> >>> In libstdc++ the prefix _S is used for static members only. In <mdspan>
> >>> there's several type aliases that also used the prefix _S. They now use
> >>> double underscore instead.
> >>
> >> Thanks for revisiting these.
> >>
> >>>
> >>> libstdc++-v3/ChangeLog:
> >>>
> >>>          * include/std/mdspan (_ExtentsStorage::__base): New name for
> >>>          _S_base.
> >>>          (_ExtentsStorage::__storage_type): New name for _S_storage.
> >>>          (extents::__storage_type): New name for _S_storage.
> >>>          (layout_stride::mapping::__strides_type): New name for
> >>>          _S_stries_t.
> >>>          * testsuite/23_containers/mdspan/class_mandate_neg.cc: Update
> >>>          test to the new error message.
> >>>
> >>> Signed-off-by: Luc Grosheintz <luc.groshei...@gmail.com>
> >>> ---
> >>>   libstdc++-v3/include/std/mdspan               | 33 ++++++++++---------
> >>>   .../23_containers/mdspan/class_mandate_neg.cc |  2 +-
> >>>   2 files changed, 18 insertions(+), 17 deletions(-)
> >>>
> >>> diff --git a/libstdc++-v3/include/std/mdspan 
> >>> b/libstdc++-v3/include/std/mdspan
> >>> index 678b2619ebe..f0139a95b11 100644
> >>> --- a/libstdc++-v3/include/std/mdspan
> >>> +++ b/libstdc++-v3/include/std/mdspan
> >>> @@ -148,14 +148,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >>>         class _ExtentsStorage : public _StaticExtents<_Extents>
> >>>         {
> >>>         private:
> >>> -       using _S_base = _StaticExtents<_Extents>;
> >>> +       using __base = _StaticExtents<_Extents>;
> >>
> >> Looking through the other headers, we usually use _Base for this case,
> >> and for other typedefs that are private to the class (and its
> >> friends).
>
> I'll redo them all (seems odd to only do half).
>
> >>
> >> Yes, that's inconsistent with __type that we use in some internal type
> >> traits, but in those cases __type is public and we intend it to be
> >> used from outside the class, by code using it. e.g. constant_wrapper
> >> uses _CwFixedValue::__type.
> >
> > I should make some updates to
> > https://gcc.gnu.org/onlinedocs/libstdc++/manual/source_code_style.html
> > to cover this.
> >
> > And turn that numbered list into a proper DocBook <variablelist>, and
> > remove number 10 (about prefixing members with 'this->' because of
> > Koenig lookup, which is just wrong).
> >
>
> I'd like to suggest the following for the long example:
>
>    - add a using _SomeType = ...; (or _Some_type),
>    - an example of attributes like [[nodiscard]] (I think it's on its
>    own line),
>    - an example with requires,
>
>    - an example of trailing return type (-> ret_type): once for when
>    it doesn't have to break and once where it wont fit.

Good idea. Nobody has touched those examples for at least 15 years, so
they predate C++11.

>
> Here's some things I'm not fully convinced are correct:
>    - in the example I think the
>      if (test)
>      {
>        nested code
>      }
>      is wrong because we need to indent the braces by one level.
>
>    - double check the for-loop, if we put the { on the same line,
>    I need to do some fixups for <mdspan>.
>
>    - In
>        function_name(char* pointer,   // "char *pointer" is wrong.
>                      char* argument,
>                      const Reference& ref)
>
>      I think we're expected to squash as much onto one line as we can?
>        function_name(char* pointer, char* argument, // not: char *pointer
>                      const Reference& ref)
>
>    -  // In-class function definitions should be restricted to
>       // one-liners.
>
>    I'm seeing lots of violation of that rule.

Agreed on all counts.

> I remember liking and referring back to the example a lot in the
> beginning.

It's useful, but would be a lot better if it reflected our actual
coding style ;-)

Reply via email to