Имея непустую boost::function
, как сделать его пустым (поэтому, когда вы вызываете .empty()
, вы получите true
)?Как очистить функцию повышения?
2
A
ответ
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
2
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();
}
даст тот же результат.
'foo = NULL', нет? – kassak