[Boost][lambda] Newbie Questions: member pointer operator use
Hi All, Given two vector<Rec*> S.T. : vector<Rec*> src; vector<Rec*> dst; Where 'src' has some elements that are useful, is there a more succint way to say: for_each(src.begin(), src.end(), if_then( bind<bool>(&vector<Rec*>::empty, &var(dst)), bind<void>(&vector<Rec*>::push_back, &var(dst), _1) ) ); Originally I tried using the member pointer operator, but this it gave me compile fits (Red Hat with a 2.4.20-8 kernel, GCC 3.4.3) with this: for_each(src.begin(), src.end(), if_then(bind<bool>(&vector<Rec*>::empty, &var(dst)), (&var(dst) ->* &vector<Rec*>::push_back)(_1) ) ); Is that a valid use of the member pointer operator? Thanks, Brian
Brian Allison wrote:
... for_each(src.begin(), src.end(), if_then( bind<bool>(&vector<Rec*>::empty, &var(dst)), bind<void>(&vector<Rec*>::push_back, &var(dst), _1) ) );
isn't it equal to: if(dst.empty()) { dst.push_back(src.front()); } ? The sample is for training purposes?
for_each(src.begin(), src.end(), if_then(bind<bool>(&vector<Rec*>::empty, &var(dst)), (&var(dst) ->* &vector<Rec*>::push_back)(_1) ) );
In either previous and in this case mere '&dst' should be used instead of '&var(dst)' without '(_1)' perhaps.
participants (2)
-
Brian Allison
-
Roman Krylov