Нечувствительное к регистру совпадение с Boost Xpressive

Я просто не могу получить regex_match функция для поиска регистронезависимых совпадений. Даже если boost::xpressive::regex_constants::icase является определенный и я использую приведение (так что нет никакой двусмысленности icase метод Xpressive), я получаю ошибку компиляции (VS2010):

ошибка C2440: «приведение типа»: невозможно преобразовать из «const boost :: xpressive :: detail :: modifier_op» в «boost :: xpressive :: regex_constants :: match_flag_type ‘

Некоторый код для воспроизведения:

#include <stdio.h>
#include <boost/xpressive/xpressive.hpp>

int main(){
std::string str("FOO");
boost::xpressive::sregex re = boost::xpressive::sregex_compiler().compile("foo");
bool result = regex_match(str,re,(boost::xpressive::regex_constants::match_flag_type)boost::xpressive::regex_constants::icase);
if(result){
std::cout << "Match!";
}else{
std::cout << "No match!";
}
return 0;
}

Вы знаете, в чем может быть проблема?

0

Решение

Попробуй использовать

boost::xpressive::sregex re = boost::xpressive::sregex_compiler().
compile("foo", boost::xpressive::icase);

syntax_options_type (то есть boost::xpressive::regex_constants::icase_) не является match_flag_type (3 аргумента для regex_match должен иметь этот тип).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]