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;

Однако создание подобного регулярного выражения приведет к тому, что оно будет работать плохо.

Другие вопросы по тегам