错误完美转发 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