Как использовать boost::lambda для создания нового объекта для существующего указателя?

Что я хочу сделать, это -> создать новый объект в новом потоке. Что-то вроде:

Class* object = 0;
Arg arg;
boost::thread t( lambda::bind( object = lambda::new_ptr< Class >()( boost::ref( arg ) );

это не компилируется, что правильно?

1 ответ

Благодаря ildjarn, я попытался с boost:: phoenix и получил его работать, код:

Class* object = 0;
CArg arg0;
Arg arg1;

boost::thread t( boost::phoenix::val( boost::ref( object ) ) = boost::phoenix::new_< Class >( boost::cref( arg0 ), boost::ref( arg1 ) );

Опять же, из ildjarn, лучший код:

Класс * объект = 0;

CArg arg0;

Arg arg1;

пространство имен phx = boost:: phoenix;

boost:: thread t (phx:: ref (object) = phx:: new_( phx::cref( arg0), phx::ref( arg1));

Другие вопросы по тегам