The requirements for splitter(R, V) are that both R1 hasLength and that it be sliceable. Ditto for splitter!condition(R).
The requirements for splitter(R1, R2) are that both R1 and R2 define the member length. That both R1 and R2 be sliceable.
This restricts both from operating on infinite ranges.
Splitter should be relatively well implementable with only Forward ranges.
Also, none have any *actual* template restrictions
Comment #1 by bugzilla — 2019-12-10T10:14:15Z
Comparing the source code from 2012 to the actual, this seems to be fixed.