Я пытался использовать boost::bind
внутри метода класса, который, в свою очередь, вызывает другой метод класса со ссылочным параметром:
void some_method() {
for_each( con.begin(), con.end(), boost::bind( &comb_str::dfs, this, _1 ) );
}
void dfs( string& str ) {
...
}
С этим синтаксисом я скомпилировал его с использованием VC ++ 2010, но он передал string
как копию вместо ссылки. Затем я попытался добавить boost_ref( _1 )
и получил сообщение об ошибке компилятора:
Error 1 error C2664: 'R boost::_mfi::mf1<R,T,A1>::operator ()<comb_str>(const U &,A1) const' : cannot convert parameter 2 from 'boost::arg<I>' to 'std::basic_string<_Elem,_Traits,_Ax> ' c:\program files\boost\boost_1_44\boost\bind\bind.hpp 313 1
Обновление
Это на самом деле работает без необходимости boost :: ref. Я действительно прошу прощения за то, что был небрежным. Спасибо, что уделили мне время.
Есть идеи?