On Sat, 18 Mar 2023 at 00:49, Nathaniel Shead wrote: > On Sat, Mar 18, 2023 at 7:36 AM Jonathan Wakely via Libstdc++ > wrote: > > > > Tested x86_64-linux. Pushed to trunk. gcc-12 backport needed too. > > > > -- >8 -- > > > > libstdc++-v3/ChangeLog: > > > > PR libstdc++/109165 > > * include/std/coroutine (hash<>::operator()): Add const. > > * testsuite/18_support/coroutines/hash.cc: New test. > > --- > > libstdc++-v3/include/std/coroutine | 2 +- > > .../testsuite/18_support/coroutines/hash.cc | 22 +++++++++++++++++++ > > 2 files changed, 23 insertions(+), 1 deletion(-) > > create mode 100644 libstdc++-v3/testsuite/18_support/coroutines/hash.cc > > > > diff --git a/libstdc++-v3/include/std/coroutine > b/libstdc++-v3/include/std/coroutine > > index f6e65566f10..b0ca18949db 100644 > > --- a/libstdc++-v3/include/std/coroutine > > +++ b/libstdc++-v3/include/std/coroutine > > @@ -345,7 +345,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > > struct hash> > > { > > size_t > > - operator()(const coroutine_handle<_Promise>& __h) noexcept > > + operator()(const coroutine_handle<_Promise>& __h) const noexcept > > { > > return reinterpret_cast(__h.address()); > > } > > diff --git a/libstdc++-v3/testsuite/18_support/coroutines/hash.cc > b/libstdc++-v3/testsuite/18_support/coroutines/hash.cc > > new file mode 100644 > > index 00000000000..68e5e640477 > > --- /dev/null > > +++ b/libstdc++-v3/testsuite/18_support/coroutines/hash.cc > > @@ -0,0 +1,22 @@ > > +// { dg-options "-std=gnu++2a" } > > +// { dg-do run { target c++2a } } > > + > > +#include > > +#include > > + > > +void > > +test01() > > +{ > > + std::hash h; > > + std::size_t v = h(std::noop_coroutine()); > > + > > + const auto& ch = h; > > + std::size_t v2 = h(std::noop_coroutine()); // PR libstdc++/109165 > > Is this supposed to be `std::size_t v2 = ch(...)`? > > Doh! Yes, thanks. Fixed by the attached change. Tested x86_64-linux, pushed to trunk.