boost::functionは、clear()メンバ関数を使用する。
#include <iostream> #include <boost/function.hpp> void foo() {} int main() { boost::function<void()> f = foo; f.clear(); // これ if (f) { std::cout << "has function" << std::endl; } else { std::cout << "hasn't function" << std::endl; } }
hasn't function
std::functionは、nullptrを代入する。
#include <iostream> #include <functional> void foo() {} int main() { std::function<void()> f = foo; f = nullptr; // これ if (f) { std::cout << "has function" << std::endl; } else { std::cout << "hasn't function" << std::endl; } }
hasn't function