Boost Regex Formatter, как использовать пользовательские функции - PullRequest
2 голосов
/ 27 января 2012

Хорошо, как мне вызвать функцию пользовательского форматирования при вызове boost :: regex_replace?

Мой код выглядит следующим образом:

template <typename T>
std::string fmt(boost::match_results<T> match) {
    auto str = match[1];
    if (str == ".") {
        return "\".\"";
    } else {
        return str;
    }
}
void __ConvertEscapeChar(std::string& action, std::string regex) {
    boost::regex re(regex);
    action = boost::regex_replace(action, re, &fmt, boost::regex_constants::match_all);
}

однако он показывает ошибку "не удалось вывести аргумент шаблона для __fmt". - Ну, что на самом деле Т?

1 Ответ

0 голосов
/ 24 августа 2012

Если вам не нужна гибкость использования шаблона в функции fmt по какой-то причине, которая здесь не очевидна, попробуйте вместо этого:

std::string fmt(boost::smatch match)
...