boost::threadは、Boost.Moveが入っていない1.46.1現在においても、C++03でmove対応してるので、boost::threadクラスのオブジェクトを関数で返すことができます(1.35.0にはすでに対応されてる)。
#include <iostream> #include <boost/thread.hpp> struct callable { void operator()() { std::cout << "run" << std::endl; } }; boost::thread make_thread() { callable x; return boost::thread(x); // 注意 : boost::refなどで参照を渡してはいけない } int main() { boost::thread t = make_thread(); t.join(); }
run