On Mon, 21 Oct 2024, 07:10 Stephan Bergmann, <sberg....@gmail.com> wrote:

> Clang appears to be a bit picky wrt the relative order of annotation
> notations here, and complains
>


Yes, this is https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117220


> >
> /home/sberg/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/15.0.0/../../../../include/c++/15.0.0/bits/stl_iter
>   ator.h:1080:42: error: an attribute list cannot appear here
> >  1080 |       __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
> >       |                                          ^~~~~~~~~~~~~~~~~~
> >
> /home/sberg/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/15.0.0/../../../../include/c++/15.0.0/x86_64-pc-linux-gnu/bits/c++config.h:173:29:
> note: expanded from macro '_GLIBCXX_NODISCARD'
> >   173 | # define _GLIBCXX_NODISCARD [[__nodiscard__]]
> >       |                             ^~~~~~~~~~~~~~~~~
>
> which would be trivially solved by something like
>
> > diff --git a/libstdc++-v3/include/bits/stl_iterator.h
> b/libstdc++-v3/include/bits/stl_iterator.h
> > index 26c5eab4b4e..49d03188fda 100644
> > --- a/libstdc++-v3/include/bits/stl_iterator.h
> > +++ b/libstdc++-v3/include/bits/stl_iterator.h
> > @@ -1077,13 +1077,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >
> >        // Forward iterator requirements
> >
> > -      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
> > +      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
> >        _GLIBCXX_CONSTEXPR
> >        reference
> >        operator*() const _GLIBCXX_NOEXCEPT
> >        { return *_M_current; }
> >
> > -      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
> > +      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
> >        _GLIBCXX_CONSTEXPR
> >        pointer
> >        operator->() const _GLIBCXX_NOEXCEPT
> > @@ -1123,7 +1123,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >
> >        // Random access iterator requirements
> >
> > -      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
> > +      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
> >        _GLIBCXX_CONSTEXPR
> >        reference
> >        operator[](difference_type __n) const _GLIBCXX_NOEXCEPT
> > @@ -1135,7 +1135,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >        operator+=(difference_type __n) _GLIBCXX_NOEXCEPT
> >        { _M_current += __n; return *this; }
> >
> > -      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
> > +      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
> >        _GLIBCXX_CONSTEXPR
> >        __normal_iterator
> >        operator+(difference_type __n) const _GLIBCXX_NOEXCEPT
> > @@ -1147,13 +1147,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >        operator-=(difference_type __n) _GLIBCXX_NOEXCEPT
> >        { _M_current -= __n; return *this; }
> >
> > -      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
> > +      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
> >        _GLIBCXX_CONSTEXPR
> >        __normal_iterator
> >        operator-(difference_type __n) const _GLIBCXX_NOEXCEPT
> >        { return __normal_iterator(_M_current - __n); }
> >
> > -      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
> > +      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
> >        _GLIBCXX_CONSTEXPR
> >        const _Iterator&
> >        base() const _GLIBCXX_NOEXCEPT
>
>

Reply via email to