This is the latest installment in my series "Get rid of bogus operator== overloads that individual test files provide, for types they don't own."
Step 1 here is test_iterators.h: Ensure that sentinel_wrapper<It> is always valid and models sentinel_for<It> — even when It is an input iterator that's not equality-comparable with itself. This also brings the code style of sentinel_wrapper and sized_sentinel into line with the rest of the test iterators: use hidden-friend operators, provide an ADL base(it) function, and so on. As usual for test code, the simpler the better.
Step 2 is a handful of files that were using .base() on a sentinel. We got rid of that method in Step 1. Namely, these files were doing foo.base().base() where the inner .base() is the Standard-mandated .base() member of an STL type, and the outer .base() is the one we just removed. ADL base(foo.base()) is even a little easier on the eyes anyway. This affects range.take/sentinel/base.pass.cpp, range.take/sentinel/ctor.pass.cpp, range.transform/end.pass.cpp, range.transform/iterator/base.pass.cpp. Drive-by assert more intermediate results in all these tests.
Step 3 is types.h: Use the newly empowered sized_sentinel<It> in SizedForwardView and SizedRandomAccessView, eliminating several bogus operator- declarations! This has cascading effects in range.common.view/{begin,end}.pass.cpp (since the sentinel type of the view has changed spelling).
Same here, please keep for the other NFC refactoring patch.