【问题标题】:Is there a sane default for std::tr1::function?std::tr1::function 是否有合理的默认值?
【发布时间】:2010-05-28 19:50:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ tr1


    【解决方案1】:

    void noop() { }

    【讨论】:

      【解决方案2】:

      你能用boost::optional&lt;std::tr1::function&lt;void()&gt; &gt;吗?这样它允许设置或不设置,您可以使用 if 检查来查看功能是否已设置。

      【讨论】:

      • 我已经可以进行 if 检查了。我想避免 if 检查并能够在任何一种情况下执行该功能。
      【解决方案3】:

      在我的项目中我使用

      void noop(...) {}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多