Subclause [func.wrap] describes polymorphic wrapper classes that
encapsulate arbitrary callable objects.

Let t be an object of a type that is a specialization of
function, copyable_function, or move_only_function,
such that the target object x of t has a type that
is a specialization of
function, copyable_function, or move_only_function.

Each argument of the
invocation of x evaluated as part of the invocation of t
may alias an argument in the same position in the invocation of t that
has the same type, even if the corresponding parameter is not of reference type.

[*Example 1*: move_only_function<void(T)>
f{copyable_function<void(T)>{[](T) {}}};
T t;
f(t); // it is unspecified how many copies of T are made
— *end example*]