class C
{
void f(T& t){...};
void c()
{
std::for_each(s.begin(), s.end(), std::bind1st(std::mem_fun(&C::f), this)); //здесь ошибка: на то, что в f аргумент является ссылкой
}
};
используется gcc3.4.6
Вообщем поискал по форуму, нашел только указания использовать boost или STLPort — но не подходят эти варианты.
В какую обертку необходимо запихнуть результат работы mem_fun, чтобы в bind1st не было ошибок?
Здравствуйте, kvser, Вы писали:
K>Здравствуйте!
K>
K>class C
K>{
K>void f(T& t){...};
K>void c()
K>{
K> std::for_each(s.begin(), s.end(), std::bind1st(std::mem_fun(&C::f), this)); //здесь ошибка: на то, что в f аргумент является ссылкой
K>}
K>};
K>
K>используется gcc3.4.6 K>Вообщем поискал по форуму, нашел только указания использовать boost или STLPort — но не подходят эти варианты.
K>В какую обертку необходимо запихнуть результат работы mem_fun, чтобы в bind1st не было ошибок?
раз уж boost используешь, попробуй boost/functional.hpp — boost::mem_fun вместо std::mem_fun
Здравствуйте, korzh.pavel, Вы писали:
KP>ты столкнулся с архитектурной ошибкой stl'ных байндеров. Не любят они когда аргументы по ссылке передаются. KP>Победить только так:
Можно STLport поставить, там этот недочет исправлен. Или выbcpить соответствующий кусок из буста.