3

有一个非空的boost::function,如何让它空(所以当你调用.empty()它时你会得到true)?

4

2 回答 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 回答