*所有*函数模板是否应作为右值传递?

时间:2017-04-01 09:44:11

标签: c++ c++11 templates rvalue-reference std-function

我不禁注意到,为函数编写模板的所有人都使用右值引用。我不确定我是对的,但这是我注意到的一种倾向。这是我的简单例子:

template <typename SyncFunc>
void waitForEstablished(int check_period_in_ms, SyncFunc&& syncFunc)
{
    auto established_future = promise_established.get_future();
    while (established_future.wait_for(std::chrono::milliseconds(check_period_in_ms)) != std::future_status::ready)
    {
        syncFunc();
    }
    established_future.get();
}

此函数的说明:在此函数中,我为用户提供了一种等待方法,并提供了一种同步/刷新GUI的机制。它有助于分离问题。用户提供应该每check_period_in_ms毫秒调用的函数,以防止阻塞。这对于在GUI应用程序中的情况很有用,以下是我如何称呼它:

commThreadController.waitForEstablished(10,[this](){QApplication::processEvents();});

函数QApplication::processEvents()处理GUI事件循环。

但是我真的很困惑我应该使用什么样的参考(总是rvalue?什么时候应该是其他东西?)以及它是否会在任何极端情况下产生影响。

我应该通过右值参考传递所有函数模板吗?

0 个答案:

没有答案