Как очистить функцию повышения?

Наличие непустого boost::functionкак сделать его пустым (чтобы при звонке .empty() на это вы получите true)?

3

Решение

Просто назначьте это NULL или построенный по умолчанию boost::function (которые по умолчанию пусты):

#include <boost/function.hpp>
#include <iostream>

int foo(int) { return 42; }

int main()
{
boost::function<int(int)> f = foo;
std::cout << f.empty();

f = NULL;
std::cout << f.empty();

f = boost::function<int(int)>();
std::cout << f.empty();
}

Выход: 011

4

Другие решения

f.clear () добьется цели. Используя пример выше

#include <boost/function.hpp>
#include <iostream>

int foo(int) { return 42; }

int main()
{
boost::function<int(int)> f = foo;
std::cout << f.empty();

f.clear();
std::cout << f.empty();

f = boost::function<int(int)>();
std::cout << f.empty();
}

даст тот же результат.

3