问题标签 [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.
c++ - 如何使用 Boost.Spirit.Qi 解析不同的结构?
在此示例中,员工结构以“employee{int, string, string, double}”的形式解析。
我想知道是否可以修改此示例以解析不同类型的结构,例如“intern{int, string, string}”。
具体来说,我想将结构传递给在结构类型上重载的函数。如果我可以避免为此使用多态双重分派,而是保留被解析的具体类型以静态匹配正确的重载函数,那就太好了。
c++ - 错误: boost.fusion::for_each() 和从 boost.tuple 派生的结构
在编译此代码时:
得到错误:“struct any_type”中没有名为“category”的类型,为什么?我希望它继承自 boost.tuple。
c++ - 从 boost::mpl::vector 获取 boost::fusion::vector 的索引
我开始使用 boost fusion 和 mpl 库,但遇到了一个非常简单的问题。
我声明了以下类型:
现在我想编写一个函数来获取来自 FusionVector 的值。
该函数按预期工作,但我想从 boost::mpl 向量中获取索引并在此函数中使用它,而不是将其作为模板参数传递给函数。但到目前为止我还没有弄清楚如何做到这一点。
有人可以给我一个提示吗?
c++ - Boost Fusion 共享指针 (shared_ptr) 容器导致分段错误 (sigsegv) 或垃圾结果
编辑:事实证明这是临时人员的问题。基本上,我无知地使用 C++,就好像它像 Java 或 C# 一样工作,但事实并非如此。希望这将是一个很好的警示故事。
编辑:这个问题似乎只发生在 和 的组合joint_view
中shared_ptr
。原始指针似乎在相同的场景中工作得很好,就像一个普通的融合容器中的共享指针一样,它一次构建了它的所有项目,而不向它添加任何东西。详情如下:
我正在使用 mingw gcc 4.5.1
在使用 boost fusion 容器并取回内容时遇到一个特殊问题。我有一个自定义类,它被包裹在 a 中std::shared_ptr
,然后将其交给 fusion make_list()
(或者make_vector()
,似乎无关紧要)。如果我可以一次将所有对象放入容器中,那一切都很好。当我向容器添加另一个共享指针时,问题似乎出现了,这会产生一个joint_view
. 我使用 a 进行迭代fusion::for_each()
并传入一个函数对象以打印出该值。如果我正在迭代共享指针的普通融合容器,而不是 ajoint_view
或joint_view
其中没有共享指针的 a ,它可以正常工作,但否则会出现分段错误或垃圾值。
以下是我为尝试隔离我的问题而编写的测试程序。关于问题可能是什么的任何想法?完全有可能我只是错过了我应该/不应该做的事情:(
c++ - 用于控制算法的函子的编译时容器?
假设我想要一些简单的东西,如下所示:
我有一个核心算法,它随机选择一种专门的算法(在编译时专门)并处理这个算法。这些专门的算法是通过函子实现的。
现在的问题是:如何实现一个容器,它是在编译时构建的,其中核心算法可以首先检查这个容器的大小(“我有 4 个算法 -> 需要随机选择算法 0-3”)然后可以在此容器中执行函子(“随机选择 2 -> 处理容器中的第三个函子”)。
如何尽可能简单地实现它?我想这是可能的。
与奇怪地重复出现的模板习语有什么联系吗?(维基链接)
有没有使用Boost::Fusion的简单方法?(官方文档)
编辑:所有算法都将用于核心算法。使用模式(随机数)是运行时决策(所以我不需要编译时随机数)。该算法只需要知道函子的容器和该容器的大小即可安全访问。
c++ - 如何让迭代器进入 boost fusion map?
我正在尝试获取迭代器boost::fusion::map
,但我错过了一些东西。
以下适用于boost::fusion::vector
:
输出:
我想做类似的事情,fusion::map
但它无法编译:
我包括这些:
错误:
c++ - 增强融合怪异
我正在尝试 Fusion 并发现一些非常奇怪的东西......这是代码......我用 // ############ TROUBLE HERE ###### 突出显示了有问题的代码
如果我使用 constRefFieldMap() 函数,我会得到垃圾值或 SIGSEGV。如果我直接调用 boost::fusion::zip 它可以完美运行。这是输出...
我之前看过这个问题......我在这里遇到同样的问题吗???
编辑1:
举一个我正在尝试做的例子......
实际上......我正在尝试编写这样的代码。
我可以通过字段名称调用的访问器和修饰符...
我计划编写一个精神解析器来解析 JSON 和 XML 并创建对象……在我的代码生成器的帮助下。主要思想是避免为每个对象生成解析代码,但仅针对那些被使用并因此减少二进制大小的对象。我现在有 1000 多个对象。
我现在已经开始工作了。
c++ - 动态和静态访问 C++ 结构中的成员
我想在 C++ 中有一个结构(或类似的东西),它允许动态访问它的成员。它应该有一个通用的 getter 和 setter,它们接收成员名称作为字符串,并返回某种变体类型(例如boost::variant
)。
我认为它可以boost::fusion::map
通过添加一个表示每个成员名称的字符串,并在字符串和 getter 或 setter 函数之间构建一个 STL 映射来实现。我不想重新发明轮子,所以我希望类似的东西已经存在。
你怎么看?我的想法可行吗?你知道实现我目标的其他方法吗?
c++ - 展平一个序列序列(序列的)
我正在使用 boost::fusion。
可以说我有以下内容:
我想产生一个函数 f 使得
即序列的扁平化版本。
我不介意这是原始序列的视图还是实际向量的视图。
如果它可以在 GCC 4.5.1 上编译,我不介意 C++0x 中的解决方案。
笔记:
虽然我不想限制数据元素,但如果有帮助,请随意要求“数据”元素全部派生自一个公共基类。
IE
然后
我想你可以通过使用“is_base_of”来计算出数据元素是什么。
c++ - 如何序列化 fusion::vector?
告诉我,如何序列化/反序列化 fusion::vector 对象类型?
谢谢。