Here:
http://en.cppreference.com/w/cpp/utility/functional/function
operator bool is described: "Checks whether the stored callable object is valid".
Presumably a default constructed std::function is not valid but is this the only case?
Also, how does it check whether it is valid?
Is the case where operator() raises std::bad_function_call exactly the case where the object is not valid?