If a range adaptor object 
adaptor accepts more than one argument,
then let 
range be an expression
such that 
decltype((range)) models 
viewable_range,
let 
args... be arguments
such that 
adaptor(range, args...) is a well-formed expression
as specified in the rest of subclause 
[range.adaptors], and
let 
BoundArgs be a pack
that denotes 
decay_t<decltype((args))>....  The expression 
adaptor(args...) produces a range adaptor closure object 
f
that is a perfect forwarding call wrapper (
[func.require]) with the following properties:
Its target object is a copy of 
adaptor.Its bound argument entities 
bound_args consist of objects of types 
BoundArgs... direct-non-list-initialized with 
std::forward<decltype((args))>(args)..., respectively
.Its call pattern is 
adaptor(r, bound_args...),
where 
r is the argument used in a function call expression of 
f.
  
The expression 
adaptor(args...) is well-formed if and only if
the initialization of the bound argument entities of the result,
as specified above, are all well-formed
.