On Tue, 15 Jun 2021 at 19:28, Jonathan Wakely wrote: > > By changing __cust_access::__decay_copy from a function template to a > function object we avoid ADL. That means it's fine to call it > unqualified (the compiler won't waste time doing ADL in associated > namespaces, and won't try to complete associated types). > > This also makes some other minor simplications to other concepts for the > [range.access] CPOs. > > Signed-off-by: Jonathan Wakely > > libstdc++-v3/ChangeLog: > > * include/bits/iterator_concepts.h (__cust_access::__decay_copy): > Replace with function object. > (__cust_access::__member_begin, ___cust_access::_adl_begin): Use > __decay_copy unqualified. > * include/bits/ranges_base.h (__member_end, __adl_end): > Likewise. Use __range_iter_t for type of ranges::begin. > (__member_rend): Use correct value category for rbegin argument. > (__member_data): Use __decay_copy unqualified. > (__begin_data): Use __range_iter_t for type of ranges::begin. That change makes it impossible to import the header in a module. Fixed by this patch. Tested powerpc64le-linux. Pushed to trunk.