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:
R | C | D
R |(C | D)
If a range adaptor object accepts more than one argument,
then the following expressions are equivalent:
adaptor(range, args...)adaptor(args...)(range)
range |adaptor(args...)
In this case, adaptor(args...) is a range adaptor
closure object.