拥有非空boost::function
,如何将其设为空(所以当你打电话给.empty()
时,你会得到true
)?
答案 0 :(得分:4)
只需指定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
答案 1 :(得分:3)
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();
}
将产生相同的结果。