我正在尝试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在这种情况下使用是多余的-如果不是这样,并且没有复制构造函数,则编译器仍然会给出错误。