On an input (but not forward) range, begin(rng) is not required to be an equality-preserving expression (24.4.2 [range.range]/3.3). If the range is also sized, then it is not valid to call size(rng) after begin(rng) (24.4.3 [range.sized]/2.2). In several places in the ranges clause, this precondition is violated. A trivial re-expression of the effects clause fixes the problem.
24.07.6.2 24.5.3.1/p6
On an input (but not forward) range, begin(rng) is not required to be an equality-preserving expression (24.4.2 [range.range]/3.3). If the range is also sized, then it is not valid to call size(rng) after begin(rng) (24.4.3 [range.sized]/2.2). In several places in the ranges clause, this precondition is violated. A trivial re-expression of the effects clause fixes the problem.
Proposed change: Adopt the proposed resolution in https://cplusplus.github.io/LWG/issue3286