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

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

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

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

0

Решение

Благодаря 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_< Class> (phx :: cref (arg0), phx :: ref (arg1));

0

Другие решения

Других решений пока нет …