3

我花了一些时间谷歌搜索,但并没有真正找到任何东西。我希望能够做到这一点:

std::tr1::function<void()> foo(SOME_DEFAULT_FUNCTION_THAT_DOES_NOTHING);
//
//Some code that could possibly assign foo
//
foo();

否则我必须这样做:

std::tr1::function<void()> foo;
//
//Some code that could possibly assign foo
//
if(foo)
{
    foo();
}

我意识到我可以创建一个什么都不做的函数,但是我正在寻找一些标准的方法来不必处理检查该函数是否被赋予了一个空对象模式的值。

4

3 回答 3

5

void noop() { }

于 2010-05-28T20:50:37.113 回答
0

你能用一个boost::optional<std::tr1::function<void()> >吗?这样它就可以设置或不设置,您可以使用 if 检查来查看功能是否已设置。

于 2010-05-28T20:00:51.237 回答
0

在我的项目中,我使用

void noop(...) {}
于 2011-10-25T09:55:00.557 回答