Я пишу грамматику Boost Spirit для разбора текста на вектор этих структур:
struct Pair
{
double a;
double b;
};
BOOST_FUSION_ADAPT_STRUCT(
Pair,
(double, a)
(double, a)
)
В этой грамматике есть такое правило:
qi::rule<Iterator, Pair()> pairSequence;
Однако фактическая грамматика pairSequence
такова:
double_ % separator
Я хочу, чтобы эта грамматика выдавала Pair
с a
, равным двойному, и b
, равным некоторой константе. Я хочу сделать что-то вроде этого:
pairSequence = double_[_val = Pair(_1, DEFAULT_B)] % separator;
Вышеупомянутое, конечно, не компилируется. Я попытался добавить конструктор в Pair
, но все равно получаю ошибки компиляции (нет соответствующей функции для вызова Pair :: Pair (const boost :: phoenix ::actor> &, double)).