A range adaptor closure object is a unary function object that accepts
a viewable_range argument and returns a view.
For
a range adaptor closure object C and an expression R such that
decltype((R)) models viewable_range, the following
expressions are equivalent and yield a view:
C(R)
R | C
Given an additional range adaptor closure object D,
the expression C | D is well-formed and produces another range adaptor
closure object such that the following two expressions are equivalent: