问题标签 [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 投票
1 回答
515 浏览

c++ - 如何使用 Boost.Spirit.Qi 解析不同的结构?

此示例中,员工结构以“employee{int, string, string, double}”的形式解析。

我想知道是否可以修改此示例以解析不同类型的结构,例如“intern{int, string, string}”。

具体来说,我想将结构传递给在结构类型上重载的函数。如果我可以避免为此使用多态双重分派,而是保留被解析的具体类型以静态匹配正确的重载函数,那就太好了。

0 投票
1 回答
852 浏览

c++ - 错误: boost.fusion::for_each() 和从 boost.tuple 派生的结构

在编译此代码时:

得到错误:“struct any_type”中没有名为“category”的类型,为什么?我希望它继承自 boost.tuple。

0 投票
1 回答
2020 浏览

c++ - 从 boost::mpl::vector 获取 boost::fusion::vector 的索引

我开始使用 boost fusion 和 mpl 库,但遇到了一个非常简单的问题。

我声明了以下类型:

现在我想编写一个函数来获取来自 FusionVector 的值。

该函数按预期工作,但我想从 boost::mpl 向量中获取索引并在此函数中使用它,而不是将其作为模板参数传递给函数。但到目前为止我还没有弄清楚如何做到这一点。

有人可以给我一个提示吗?

0 投票
2 回答
995 浏览

c++ - Boost Fusion 共享指针 (shared_ptr) 容器导致分段错误 (sigsegv) 或垃圾结果

编辑:事实证明这是临时人员的问题。基本上,我无知地使用 C++,就好像它像 Java 或 C# 一样工作,但事实并非如此。希望这将是一个很好的警示故事。

编辑:这个问题似乎只发生在 和 的组合joint_viewshared_ptr。原始指针似乎在相同的场景中工作得很好,就像一个普通的融合容器中的共享指针一样,它一次构建了它的所有项目,而不向它添加任何东西。详情如下:

我正在使用 mingw gcc 4.5.1 在使用 boost fusion 容器并取回内容时遇到一个特殊问题。我有一个自定义类,它被包裹在 a 中std::shared_ptr,然后将其交给 fusion make_list()(或者make_vector(),似乎无关紧要)。如果我可以一次将所有对象放入容器中,那一切都很好。当我向容器添加另一个共享指针时,问题似乎出现了,这会产生一个joint_view. 我使用 a 进行迭代fusion::for_each()并传入一个函数对象以打印出该值。如果我正在迭代共享指针的普通融合容器,而不是 ajoint_viewjoint_view其中没有共享指针的 a ,它可以正常工作,但否则会出现分段错误或垃圾值。

以下是我为尝试隔离我的问题而编写的测试程序。关于问题可能是什么的任何想法?完全有可能我只是错过了我应该/不应该做的事情:(

0 投票
3 回答
812 浏览

c++ - 用于控制算法的函子的编译时容器?

假设我想要一些简单的东西,如下所示:

我有一个核心算法,它随机选择一种专门的算法(在编译时专门)并处理这个算法。这些专门的算法是通过函子实现的。

现在的问题是:如何实现一个容器,它是在编译时构建的,其中核心算法可以首先检查这个容器的大小(“我有 4 个算法 -> 需要随机选择算法 0-3”)然后可以在此容器中执行函子(“随机选择 2 -> 处理容器中的第三个函子”)。

如何尽可能简单地实现它?我想这是可能的。

奇怪地重复出现的模板习语有什么联系吗?(维基链接
有没有使用Boost::Fusion的简单方法?(官方文档

编辑:所有算法都将用于核心算法。使用模式(随机数)是运行时决策(所以我不需要编译时随机数)。该算法只需要知道函子的容器和该容器的大小即可安全访问。

0 投票
1 回答
2036 浏览

c++ - 如何让迭代器进入 boost fusion map?

我正在尝试获取迭代器boost::fusion::map,但我错过了一些东西。

以下适用于boost::fusion::vector

输出:

我想做类似的事情,fusion::map但它无法编译:

我包括这些:

错误:

0 投票
1 回答
874 浏览

c++ - 增强融合怪异

我正在尝试 Fusion 并发现一些非常奇怪的东西......这是代码......我用 // ############ TROUBLE HERE ###### 突出显示了有问题的代码

如果我使用 constRefFieldMap() 函数,我会得到垃圾值或 SIGSEGV。如果我直接调用 boost::fusion::zip 它可以完美运行。这是输出...

我之前看过这个问题......我在这里遇到同样的问题吗???

编辑1:

举一个我正在尝试做的例子......

实际上......我正在尝试编写这样的代码。

我可以通过字段名称调用的访问器和修饰符...

我计划编写一个精神解析器来解析 JSON 和 XML 并创建对象……在我的代码生成器的帮助下。主要思想是避免为每个对象生成解析代码,但仅针对那些被使用并因此减少二进制大小的对象。我现在有 1000 多个对象。

我现在已经开始工作了。

0 投票
3 回答
1597 浏览

c++ - 动态和静态访问 C++ 结构中的成员

我想在 C++ 中有一个结构(或类似的东西),它允许动态访问它的成员。它应该有一个通用的 getter 和 setter,它们接收成员名称作为字符串,并返回某种变体类型(例如boost::variant)。

我认为它可以boost::fusion::map通过添加一个表示每个成员名称的字符串,并在字符串和 getter 或 setter 函数之间构建一个 STL 映射来实现。我不想重新发明轮子,所以我希望类似的东西已经存在。

你怎么看?我的想法可行吗?你知道实现我目标的其他方法吗?

0 投票
1 回答
982 浏览

c++ - 展平一个序列序列(序列的)

我正在使用 boost::fusion。

可以说我有以下内容:

我想产生一个函数 f 使得

即序列的扁平化版本。

我不介意这是原始序列的视图还是实际向量的视图。

如果它可以在 GCC 4.5.1 上编译,我不介意 C++0x 中的解决方案。

笔记:

虽然我不想限制数据元素,但如果有帮助,请随意要求“数据”元素全部派生自一个公共基类。

IE

然后

我想你可以通过使用“is_base_of”来计算出数据元素是什么。

0 投票
1 回答
379 浏览

c++ - 如何序列化 fusion::vector?

告诉我,如何序列化/反序列化 fusion::vector 对象类型?

谢谢。