operator.
не перегружается, поэтому он никогда не может сделать ничего разумного для заполнителя.
Boost.Lambda (и Boost.Phoenix v1 и v2, основанные на Boost.Lambda) реализуют свой собственный протокол result_of, а не протокол TR1 result_of, поэтому функторы Boost.Lambda не будут работать ни с чем, используя boost::result_of
или std::tr1::result_of
(как это делает Boost.Range).
Тем не менее, Boost.Phoenix v3, выпуск которого запланирован в Boost 1.47, является официальной заменой Boost.Lambda, а реализует протокол TR1 result_of и так же хорошо играет с boost::result_of
(и, следовательно, Boost.Range).
Вы можете использовать Boost.Bind вместо Boost.Lambda, в этом случае действует следующее:
transformed(bind(&myObjectType::myMember, _1))
или вы можете использовать Boost.Phoenix v3 вместо Boost.Lambda (либо вытащить Boost.Phoenix из транка сейчас или дождаться Boost 1.47), в этом случае допустим синтаксис Boost.Bind, а также следующая альтернатива :
transformed(_1->*&myObjectType::myMember)