Как использовать / манипулировать возвращаемым значением из вложенного boost :: bind - PullRequest
1 голос
/ 16 апреля 2010

У меня есть две функции: 1. A & DataSource (); 2. void DataConsumer (A *);

Чего я хочу добиться: Использование одного оператора для объединения их в один функтор .

Я пробовал:

1. boost :: function func (boost :: bind (DataConsumer, & boost :: bind (DataSource))));

конечно, это не сработало, компилятор говорит, что не может конвертировать 'boost :: _ bi :: bind_t' в 'A *'

2. boost :: function func (boost :: bind (DataConsumer, boost :: addressof (boost :: bind (DataSource))))) ;

компилятор говорит, что не может преобразовать параметр 1 из 'boost :: _ bi :: bind_t' в 'A &'

Вопрос: как использовать возвращаемое значение из вложенного boost :: bind? или если вы хотите использовать boost :: lambda :: bind.

1 Ответ

1 голос
/ 16 апреля 2010

ребята, я только что нашел ответ, например:

boost::function< void()> func(
        boost::bind( DataConsumer, 
                     boost::bind( boost::addressof< A >, boost::bind< A& >( DataSource ) )
                    )            );

Теория должна состоять в следующем: поскольку мы вызываем DataSource позже, нам нужен функтор, который также использует возвращаемое значение позже.

...