On Tue, 15 Jun 2021 at 22:33, Jonathan Wakely wrote: > > On Tue, 15 Jun 2021 at 21:32, Tim Song wrote: > > > > CPOs are specified as actual semiregular function objects that can be > > copied and constructed freely, so it seems a bit hostile to make them > > final/non-addressable? (It's debatable whether the type of a CPO is a > > type "specified in the C++ standard library" for which [derivation]/4 > > would apply.) > > I noticed that libstdc++ was failing some libc++ tests, but that was > only for ranges::advance etc and not the CPOs. I guess I got a bit > carried away, and it shouldn't apply to the CPOs, only the > [range.iter.ops] "function templates" (which are not really function > templates). This reverts the changes to the [range.access] CPOs, and improves some tests slightly. Tested powerpc64le-linux. Pushed to trunk.