错误完美转发 lamda - 丢弃限定符
error perfect forwarding a lamda - discards qualifiers
鉴于此代码:link
我正在传递一个 lambda 和一个参数包并将其转发给 std::thread 的构造函数。
这是一个代码片段:
template<typename Functor, class... Args>
std::thread create_fifo_thread(int sch_priority, const Functor&& func, Args&&... args)
{
std::thread th(std::forward<Functor>(func), std::forward<Args>(args)...)
// std::thread th(func, std::forward<Args>(args)...);
set_fifo_pri(th, sch_priority);
return th;
}
你可以看到当我这样做时我得到了错误,但是当我切换其中的注释行时它工作正常。请按照link查看错误,它很长! - 但如果需要,我可以在这里打印。
我是这样称呼它的:
auto fth = create_fifo_thread(10, [](int count){ return test(count); }, 10);
请注意 test()
是 void test(int count)
- 非常简单的函数。
我的问题are/is:我需要在这里尝试完美转发吗? - 我要放弃哪些限定词? - 最好的方法是什么?
要完美转发使用Functor&& func
- 而不是const Functor&& func
鉴于此代码:link
我正在传递一个 lambda 和一个参数包并将其转发给 std::thread 的构造函数。
这是一个代码片段:
template<typename Functor, class... Args>
std::thread create_fifo_thread(int sch_priority, const Functor&& func, Args&&... args)
{
std::thread th(std::forward<Functor>(func), std::forward<Args>(args)...)
// std::thread th(func, std::forward<Args>(args)...);
set_fifo_pri(th, sch_priority);
return th;
}
你可以看到当我这样做时我得到了错误,但是当我切换其中的注释行时它工作正常。请按照link查看错误,它很长! - 但如果需要,我可以在这里打印。
我是这样称呼它的:
auto fth = create_fifo_thread(10, [](int count){ return test(count); }, 10);
请注意 test()
是 void test(int count)
- 非常简单的函数。
我的问题are/is:我需要在这里尝试完美转发吗? - 我要放弃哪些限定词? - 最好的方法是什么?
要完美转发使用Functor&& func
- 而不是const Functor&& func