Ialso asked myself why a function<>-object needs a copyable target when the function<>-object isn't constructed with copying but with moving. Then I had the idea that deleting, copying and moving the target inside the function<>-object must be virtual, i.e. when the function<> object is initialized these three operations have to be initialized as function-pointers. This requires copyability of the target at creation time even if the target is moved inside the function<>-object.