【发布时间】:2015-12-08 11:18:33
【问题描述】:
我检查了这个网页 http://www.boost.org/doc/libs/1_44_0/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html 和许多其他网页,但找不到我的问题的答案。
我有一个 C %= A % B 形式的规则,其中 B 是解析器而不是文字,它的类型与 A 不同。上面网页上给出的规则说:
a: A, b: B --> (a % b): vector<A>
但鉴于在我的情况下 B 是一个解析器而不是 A 类型,这条规则似乎无法解决问题。
我已经试过了:
(a % b): variant<A, tuple<B,A>>
因此定义了这个结构:
struct equality_expression
{
variant<A,tuple<B,A>> equexp;
};
之后
BOOST_FUSION_ADAPT_STRUCT(
equality_expression,
(variant<A,tuple<B,A>>, equexp);
)
但编译器抱怨:
warning C4002: too many actual parameters for macro 'BOOST_FUSION_ADAPT_STRUCT_FILLER_0'
那么,这样做的正确方法是什么?
【问题讨论】:
标签: c++ boost attributes boost-spirit