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 > >