一个好的特殊值可能是默认构造的boost::function
。
空function
值在布尔上下文(如 NULL 指针)中评估为 false,或者您可以使用该empty()
方法测试函数对象包装器是否实际包含函数。请参阅boost::function 教程。
这是一个代码示例:
#include <boost/function.hpp>
#include <iostream>
typedef boost::function<void (int code)> t_err_callback;
void do_callback(int code)
{
std::cout << "Error " << code << std::endl;
}
void my_func(int a, int b, t_err_callback err_callback=t_err_callback())
{
bool error = true; // An error happened
int error_code = 15; // Error code
if (error && !err_callback.empty())
err_callback(error_code);
}
int main()
{
my_func(0, 0);
my_func(0, 0, do_callback);
}