Я просто не могу получить 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;
}
Вы знаете, в чем может быть проблема?
Попробуй использовать
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
должен иметь этот тип).
Других решений пока нет …