LINUX.ORG.RU

[boost] проблемы с bind

 


0

0

Года полтора назад писал курсовик, использовал boost. Cейчас другу дали практически такое же задание, хотел дать ему свою прогу, а она не компилируется т.к. буст обновился и видимо там что то поменялось.
Код на котором ошибка, следующий:

std::vector<std::string> preg_match_all(const std::string & s, const boost::regex & expr)
{
    typedef boost::regex_iterator<std::string::const_iterator> iter;
    std::vector<std::string> res;
    transform
        (
         iter(s.begin(), s.end(), expr),
         iter(),
         back_inserter(res),
         bind(&iter::value_type::str, _1, 0)
         );
    return res;
}
Реализует он функцию preg_match_all аналогичную в php. Код кстати был найден на каком то зарубежном мейл листе.
Ошибку выдает следующею:
pregmatch.cpp: In function ‘std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > preg_match_all(const std::string&, const boost::regex&)’:
pregmatch.cpp:20: ошибка: нет соответствующей функции для вызова ‘bind(<unresolved overloaded function type>, boost::arg<1>&, int)’
make: *** [pregmatch.o] Ошибка 1

Что это может быть?
Boost на котором писал: 1.39
На котором ошибка: 1.41
Можно конечно собрать и старый boost но просто интересно что там поменяли


судя по сообщению об ошибке iter::value_type::str стала перегруженной, нужно привести её к требуемому типу.

Begemoth ★★★★★
()

чувствую где-то typename не хватает, хотя могу ошибаться

&typename iter::value_type::str

или даже

&typename iter::typename value_type::str

%]

yatagarasu
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.