如何清除助推功能?

时间:2013-04-02 09:44:35

标签: c++ boost boost-function

拥有非空boost::function,如何将其设为空(所以当你打电话给.empty()时,你会得到true)?

2 个答案:

答案 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();
}

将产生相同的结果。