我不禁注意到,为函数编写模板的所有人都使用右值引用。我不确定我是对的,但这是我注意到的一种倾向。这是我的简单例子:
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?什么时候应该是其他东西?)以及它是否会在任何极端情况下产生影响。
我应该通过右值参考传递所有函数模板吗?