struct Runner { Runner ( BcastEval_Impl* b ) : m_b(b) {} void operator () () { m_b->run(); } BcastEval_Impl* m_b; }; void BcastEval_Impl::start () { m_log << "start" << endl; m_thread = new thread(Runner(this)); m_log << "start ended" << endl; } void BcastEval_Impl::run () { // du bordel }