gpt4 book ai didi

c++ - 为什么 boost::qi 规则的属性必须用括号声明?

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:56 24 4
gpt4 key购买 nike

我想知道为什么必须这样声明具有属性的 qi::rule:

qi::rule<string::iterator, std::string(), ascii:space_type>

不是这样的

qi::rule<string::iterator, std::string, ascii:space_type>

哪个对我来说更自然。我什至不知道第一种形式是有效的模板实例化,我仍然不明白它是怎么回事。

你能解释一下这个技巧吗?

最佳答案

没有技巧。属性类型不是 std::string。这是一个函数返回 std::string。因为这就是 Qi 规则的本质(如果你仔细观察的话):它是一个解析一段文本并返回解析值的函数。

这些只是一种可能的属性类型。其他规则接受值,因此是具有参数的函数:

qi::rule<string::iterator, void(std::string), ascii::space_type> end_tag;

这是来自 Qi documentation 的示例.

关于c++ - 为什么 boost::qi 规则的属性必须用括号声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21782457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com