Search code examples
c++std-function

How to reset an std::function?


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.
}

Solution

  • 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);