有一个非空的boost::function
,如何让它空(所以当你调用.empty()
它时你会得到true
)?
问问题
3486 次
2 回答
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();
}
将产生相同的结果。
于 2014-06-26T23:59:44.653 回答
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
于 2013-04-02T09:50:57.007 回答