It is poorly written as it is, your confusion is justified. By "valid" they mean "has a purpose."
A std::function "has a purpose" when a function is assigned to it:
std::function<void()> x; // no target std::function<void()> y = some_void_function; // has target x = some_other_void_function; // has target y = nullptr; // no target x = y; // no target
They had to either define "valid" before using them, or simply stick to the official wording.
source share