std::function can be empty, and it’s convertible to bool to test if it has a target or not. But, how to set it to nullptr after you’ve assigned something to it?
int main()
{
std::function<void()> f = []() { return 4; };
// how to reset to null, to it's initial state when default constructed.
}
>Solution :
You can either:
-
assign
nullptrto it:f = nullptr; -
assign an empty
functionto it:f = std::function<void()>{}; // or: f = decltype(f){}; -
swap()it with another emptyfunction:std::function<void()>{}.swap(f); // or: decltype(f){}.swap(f);