Здравствуйте, lomezych, Вы писали:
L>Да, блин, сорри... писал в попыхах... опечатался...На самом деле надо вот как:
L>min и мах — это как раз подставляемые значения.. а для выяснения, входит ли в диапазон — это как раз должно быть значение возвращаемое Foo::mf.
Тогда нужно оставить оригинальный in_range (как в самом первом посте)
L>Значит теперь усложним задачу. Получилось так, что надо предварительно надо перед сравнением переделать. Допустим есть функция (может быть как и член Foo, так и некая static).
Вот так:
for_each_if
(
sequence.begin(),
sequence.end(),
boost::mem_fn(&Foo::generator),
boost::bind
(
in_range<bar>(min, max),
boost::bind( Foo::barTobaz, boost::bind(&Foo::mf, _1, value_passed_to_Foo_mf_function) )
)
);
IMHO, три вложенных bind — это извращение. Лучше напиши
обычный цикл вместо for_each_if с
нормальными вызывами всех функций.
PS: сейчас кто-нибудь придёт и напишет тебе вариант с boost::lambda, но это будет ещё большим извращением.
... << RSDN@Home 1.1.2 stable >>