2013-04-02 2 views

ответ

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

даст тот же результат.