Reputation: 14014
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 null 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.
}
Upvotes: 8
Views: 4052
Reputation: 38716
The simplest way, I use it:
f = {};
https://godbolt.org/z/hzEq3xo4e
#include <functional>
int main() {
std::function<void()> f = []() { return 4; };
f = {};
}
Upvotes: 7
Reputation: 596938
You can either:
assign nullptr
to it:
f = nullptr;
assign an empty function
to it:
f = std::function<void()>{};
// or:
f = decltype(f){};
swap()
it with another empty function
:
std::function<void()>{}.swap(f);
// or:
decltype(f){}.swap(f);
Upvotes: 10