Xpressive >>= Оператор
Я играю с Boost Xpressive и испытываю проблемы со следующим фрагментом
#include <iostream>
#include <string>
#include <boost/xpressive/xpressive.hpp>
using namespace std;
using namespace boost::xpressive;
int main()
{
string s("123");
sregex rex = _d;
rex >>= _d;
smatch what;
regex_search(s, what, rex);
cout << "Match: " << what[0] << endl;
return 0;
}
Результатом запуска этой программы является совпадение 1
в отличие от ожидаемого 12
, Ли sregex::operator>>=
иметь другое значение / использовать то, что я интуитивно предполагал? Я ожидал, что это приведет к sregex
похожий на _d >> _d
,
1 ответ
Решение
Xpressive не поддерживает оператор >>=. Тот факт, что этот код компилируется вообще, можно считать ошибкой. Пытаться:
rex = rex >> _d;
Однако создание подобного регулярного выражения приведет к тому, что оно будет работать плохо.