我正在尝试std::thread
使用不带参数和返回值的成员函数构造一个void
。我无法找出任何有效的语法-编译器会抱怨。什么是正确的实现方式spawn()
,使其返回std::thread
执行结果test()
?
#include <thread>
class blub {
void test() {
}
public:
std::thread spawn() {
return { test };
}
};
1
您的意思是该函数返回void,称为void还是没有任何参数。您可以添加您要执行的操作的代码吗?
—
Zaid Amir 2012年
你测试了吗 (我还没有。)您的代码似乎依赖于RVO(返回值优化),但是我不认为您应该这样做。我认为使用
—
RnMss
std::move( std::thread(func) );
更好,因为std::thread
没有复制构造函数。
@RnMss:您可以依赖RVO,
—
Qualia 2015年
std::move
在这种情况下使用是多余的-如果不是这样,并且没有复制构造函数,则编译器仍然会给出错误。