On Tue, 30 Aug 2022 at 18:14, Patrick Palka via Libstdc++ <libstd...@gcc.gnu.org> wrote: > > Tested on x86_64-pc-linux-gnu, does this look OK for trunk?
> + constexpr > + _Iterator(__as_sentinel, iterator_t<_Base> __first, iterator_t<_Base> > __last) > + { > + if constexpr (!bidirectional_range<_Base>) > + for (auto& __it : _M_current) > + __it = __last; > + else > + for (ssize_t __i = _Nm-1; __i >= 0; --__i) ssize_t is defined by POSIX in <sys/types.h> but isn't in ISO C or C++. It looks like MinGW defines it to ... something ... sometimes, but I don't think we can rely on it for non-POSIX targets. > + template<size_t _Nm> > + struct _Adjacent : __adaptor::_RangeAdaptorClosure > + { > + template<viewable_range _Range> > + requires (_Nm == 0) || __detail::__can_adjacent_view<_Nm, _Range> > + [[nodiscard]] > + constexpr auto > + operator()(_Range&& __r) const Does this attribute actually work here? I thought we needed to use `operator() [[nodiscard]]` for functions with a requires-clause, because otherwise the attribute gives a parse error. Maybe I've misremembered the problem, and it just doesn't give a -Wunused-result warning. The decl above is setting off my spidey sense for some reason though.