#include void some_function() { } void some_other_function(int) { } 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 t1 = f(); t1.join(); std::thread t2 = g(); t2.join(); }