我正在编写一个 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)')。