【发布时间】:2021-09-25 13:51:44
【问题描述】:
我正在尝试使用不带参数并返回 void 的成员函数构造一个 std::thread。我无法弄清楚任何有效的语法 - 编译器无论如何都会抱怨。实现spawn() 以使其返回执行test() 的std::thread 的正确方法是什么?
#include <thread>
class blub {
void test() {
}
public:
std::thread spawn() {
return { test };
}
};
【问题讨论】:
-
你的意思是函数返回 void,称为 void 或者它只是没有任何参数。你可以添加你想要做的代码吗?
-
你测试了吗? (我还没有。)您的代码似乎依赖于 RVO(返回值优化),但我认为您不应该这样做。我认为使用
std::move( std::thread(func) );更好,因为std::thread没有复制构造函数。 -
@RnMss: you can rely on RVO,在这种情况下使用
std::move是多余的 - 如果这不是真的,并且没有复制构造函数,编译器无论如何都会出错。
标签: c++ multithreading c++11