问题标签 [boost-fusion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
978 浏览

boost - 从可选解析器表达式的可变参数列表生成 Spirit 解析器表达式

我正在寻找实现可变参数函数的最简单方法,该函数采用 boost::spirit::qi 规则列表并将列表扩展为格式的表达式:rule1 | 规则2 | rule3 |.... 假设规则不合成任何属性。非常感谢您的帮助。



0 投票
2 回答
618 浏览

c++ - 从 boost::fusion::tuple 访问第 0 个元素

通常我会通过以下方式访问一个常规元组元素(比如 0)

但是,如果元组的类型为 boost::fusion::tuple 我如何访问第 0 个元素

更多详情

我有这样的东西

现在我使用它如下

如何访问第 0 个元素,即 323 ?

0 投票
1 回答
903 浏览

c++ - 如何迭代 boost::fusion 关联结构并以通用方式访问键

这是我对这个伟大的知识交流的第一个问题,我希望我能找到一些帮助。

我尝试实现一种通用的方法来创建 PrintTo 函数(后来在 GoogleTest 中使用)。

所以下面的代码只完成了一半的工作。它只打印定义的结构的值Foo::Bar

所以我正在寻找的是一种自动打印的方法Foo::Keys。我查看了 BOOST_FUSION_DEFINE_ASSOC_STRUCT 的 makro 生成代码,据我所知,这些密钥可作为静态 const char* boost::fusion::extension::struct_member_name::call() 使用。

我查看了 fusion::for_each 的代码,到目前为止,我只看到了一种“复制”完整代码的方法,以便使用两个参数 Key 和 values 调用 fusion_printer_impl::operator()。在我进入那个方向之前,我想知道是否有更简单的方法来实现这一点。

我知道可以显式定义 boost::fusion::map。这里可以通过 fusion::pair 自动访问 Key 类型和值。但这对我来说目前没有选择。

因此,欢迎在这里提供任何帮助。

0 投票
1 回答
780 浏览

boost - 将字符串解析为具有增强精神的结构

我有以下代码,我需要解析一个字符串并将其移动到定义如下的结构中:

我的语法是这样的:

然后我使用这些代码行解析我的字符串:

好的,问题是当我的 struct 有 10 个或更少字段时我的代码编译得很好,但是当我在 struct 中有更多字段时它会出错,所以我猜这是因为参数的原因,SPIRIT_ARGUMENTS_LIMIT因为它的默认值为 10。

在包含精神头文件之前,我尝试将此参数定义为我想要的大小,但我仍然遇到编译错误

我应该如何解决这个问题?

0 投票
1 回答
94 浏览

c++ - 模板递归区分 boot::tuple 中的数据类型

问题:我需要一个函数对象A来递归 boost::tuple 的数据类型,但对传入成员的所有其他数据类型执行其他操作t

我尝试的是为声明之上的所有可能的传入数据类型设置静态函数,A但我无法返回递归函数,因为这些静态不知道class A. true我的第二种方法是为 boost::tuple 和任何其他返回的所有可能的数据类型实现静态函数false(与示例中的非常相似)。但是我无法实现for_each调用,因为(即使它被 if 案例包装)我的 IDE 说没有匹配的函数调用(对于int,float和的类型是正确的string)。

0 投票
1 回答
709 浏览

c++ - 提升精神解析整数到自定义列表模板

我在解析这样的文件时遇到了问题:

没什么难的,以下语法适用于此:

我的问题是我需要保存解析的结果。例如,我需要将 int 的 list1 和 list2 保存到自定义列表模板中:

其中ChainLink是:

我在 SimpleLinkList 中有一个方法 pushback,就像 vector 一样,但我不明白如何解析 int,将其保存到 ChainLink 并将其添加到 SimpleLinkList。

我已经在http://boost-spirit.com/home/2010/02/08/how-to-adapt-templates-as-a-fusion-sequence/看到了如何使模板结构适应融合序列.

我需要一个自定义 LinkList 才能在循环时删除和添加项目。

我需要帮助来了解如何安排所有这些以成功解析我的文件。

谢谢你的帮助。

0 投票
2 回答
876 浏览

c++ - 是否可以反向使用 boost fusion map,也就是 key 是 567,value 是 type ?

我想对类型 map 有价值,从我看到的 boost fusion 使用 map 使用 pair ,其中 type 始终是第一个成员(所以它是 map 中的关键)?

是否可以将值(例如上面示例中的“X”)作为键和类型值?如果不能,我至少可以根据值进行过滤(这很慢,所以很高兴知道我是否可以根据第二个参数对融合向量进行排序并在其上使用 binary_search(再次使用查看值而不是键的自定义比较器) .

0 投票
1 回答
146 浏览

c++ - tuple - get_or 辅助函数

我需要一个元组辅助函数,如果元组中不存在请求的类型,它会返回一个默认构造的空类型。

例如

我想我需要一些增强融合魔法,但我还没有完全弄清楚。有什么建议么?

0 投票
1 回答
2162 浏览

c++ - 访问 boost fusion map 字段名称

我一直在尝试使用一些 boost fusion 的东西来编写一个常规的 c 结构文件。XML 文件似乎是捕获数据并使其与其他工具兼容或可手动编辑的好方法。似乎我几乎拥有它,但似乎缺少一些基本的东西。我使用的东西与 boost::fusion 快速入门页面上的内容非常相似:http: //www.boost.org/doc/libs/1_54_0/libs/fusion/doc/html/fusion/quick_start.html。作为旁注,我已经彻底查看了here和boost的文档,但似乎没有人访问该字段名称。

我想按如下方式使用它:

其他时候我将结构定义如下,但仍然没有运气:

我知道首先没有成员,但似乎应该有才能访问字段名称!我的代码在 x.second 上运行良好,但没有完成我需要的获取字段名称的功能。我还能如何做到这一点?谢谢!

0 投票
1 回答
180 浏览

c++ - 当词法分析器标记> 10 时 boost::spirit 编译错误

当我尝试编译以下代码时,当 token_list > 10 个标记时,我得到一个编译失败(错误 C2903:'apply':符号既不是类模板也不是函数模板......)。

当标记 <= 10 时,代码可以正确编译和解析。标记的数量是否有限制?