Определить функцию, возвращающую объект thread
:
std::thread f()
{
Объявите функцию extern
без аргументов, возвращающую void
(обычно это не делается в локальной области, но это допустимо):
void some_function();
Запустите поток, выполняющий эту функцию, и верните ей дескриптор:
return std::thread(some_function);
}
То же предложение, что и раньше:
std::thread g()
{
void some_other_function(int);
Но это недопустимо. Вы не можете сделать копию потока, поэтому технически это не нормально сделать локальный объект thread
и затем вернуть его. Я был бы удивлен, если бы это скомпилировано, но если это произойдет, оно может сломаться, когда вы создадите для отладчика.
std::thread t(some_other_function,42);
return t;
}
Это будет работать, хотя:
return std::move( t );