我想知道为什么当std::thread
仅可移动时,从函数返回std::thread
是可以的。是因为优化返回值还是一般有效?
考虑以下代码:
std::thread f()
{
void some_function();
return std::thread(some_function);
}
std::thread g()
{
void some_other_function(int);
std::thread t(some_other_function, 42);
return t;
}
int main() {
std::thread t0 = f();
std::thread t1 = g();
return 0;
}
我很好奇std::thread t0 = f();
和std::thread t1 = g();
依赖(N)RVO还是总体上有效。
假设没有发生返回值优化,那么是否不应该在f()
(和g()
)进行复制?