问题标签 [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::fusion::vector?
首先,对于与我之前的问题的相似之处表示歉意,但我认为我问的不是正确的。
我有一个方法:
它采用fusion::vector<T1, T2, T3, ..., Tn>
在运行时确定的类型 - 例如vector<int, double>
在一个调用和vector<int, double, int>
另一个调用中。
我想用类似的东西动态填充这个向量:
这不起作用,因为 at_c 需要一个const
.
我尝试了其他东西(请参阅上一个问题),但仍然无法弄清楚如何实现这一目标。
非常感谢任何帮助!谢谢。
c++ - 如何识别增强融合向量中的类型
如何识别 boost::fusion 向量中的类型?
例如
然后是可以让我识别v[0]
为 type int
,v[1]
as typedouble
和v[2]
as type的东西string
。
谢谢。
c++ - 是否可以在融合地图中嵌套融合地图?
我是新来的融合。是否可以在融合地图中嵌套融合地图?在下面的示例中,我如何编写代码以解析为 B?
c++ - 在 boost::spirit::karma 中使用 boost::fusion::map
我正在使用 boost spirit 将一些文本文件解析为一个数据结构,现在我开始从这个数据结构中生成文本(使用 spirit karma)。
对数据结构的一种尝试是 boost::fusion::map (如对 这个问题的回答中所建议的那样)。但是,虽然我可以使用 boost::spirit::qi::parse() 并轻松获取其中的数据,但当我尝试使用 karma 从中生成文本时,我失败了。
下面是我的尝试(尤其是“map_data”类型)。在阅读和尝试了其他融合类型之后,我发现了 boost::fusion::vector 和 BOOST_FUSION_DEFINE_ASSOC_STRUCT。我成功地用它们生成了输出,但它们似乎并不理想:在向量中,你不能使用名称访问成员(它就像一个元组)——而在另一个解决方案中,我认为我不需要两种方式(成员名称和密钥类型)来访问成员。
包括注释行会给出很多页面的编译错误,其中值得注意的是:从 'boost::fusion::pair' 到 'double' 的参数 1 没有已知的转换 'boost::fusion 的参数 1 没有已知的转换::pair'到'浮动'</p>
可能是 to_string 需要 map_data 的值,而不是对?虽然我不擅长模板,但我尝试通过以下方式使用变换从地图中获取矢量
但是我不知道在实例化 take_second 时我应该给出什么类型,无论如何我认为必须有一种更简单的方法来获取(迭代)地图的值(有吗?)
如果您回答了这个问题,还请就使用 ASSOC_STRUCT 还是使用地图更好地发表您的意见。
c++ - 需要使用 boost::fusion::filter_if 元函数的示例
给定 boost::fusion::vector 类型,我想过滤掉所有非 ref 成员以获得新类型。例如,这会将 boost::fusion::vector 转换为 boost::fusion::vector。我猜 boost::fusion::filter_if 元函数可能能够做到这一点,但在文档中没有使用它的例子。任何建议,将不胜感激。
c++ - 提升融合和常量正确性
我正在学习 boost fusion,并试图了解std::vector<boost::fusion::vector<int,double,double> >
. 代码看起来很简单,但我似乎遇到了一些 const 问题。我显然误解了一些关于 const 的事情,并且希望有人能解释我哪里出错了。
编码:
retVal.push_back()
由于转换 const 的问题,代码无法编译。我尝试了几种删除和添加一些 const 关键字的排列,但在排列编程方面没有成功,我宁愿理解我在做什么。
有人有什么想法吗?顺便说一句const
,函数定义中的sum
andc
必须保留。
编辑:我忘了提到b
填充x
是std::vector<fusion::vector<int, double, double> >
EDIT2:更正的代码:
c++ - 是否可以使用 boost 来序列化和打印多态类?
是否有一种使用 boost 进行编组/解组以及带有字段名称(RTTI?)的漂亮打印结构的最小方法?似乎您可以使用boost::fusion
然后以某种方式boost::serialization
使用函数自动实现接口boost::fusion
,但我不确定如何处理这个问题,或者是否可能。
c++ - 如何将 BOOST_FUSION_ADAPT_STRUCT 与子结构一起使用?
例如,假设我有以下结构/子结构定义:
我应该如何BOOST_FUSION_ADAPT_STRUCT
使用employee_rec
?
c++ - 提升不同std::vectors的融合向量来实现数据框
我正在尝试在 C++ 中实现一个“数据框架”类型类(如在 S+/R 中),类似于:
我的目标是将数据作为“列向量”(而不是简单的元组向量)存储在内存中,原因与问题并不真正相关。
(假设我没有可变参数模板,而且我现在不担心参数的固定数量——我可以稍后解决这个问题)。
使用 MPL 和融合,到目前为止,我已经能够创建 std:vectors 的融合序列:
我还设法定义了一个 tuple_type,它是 boost::tuple 的特化,具有与 data_frame 相同的签名。
现在,我想定义一个允许我将 tuple_type 添加到 data_frame 的成员函数。这是我的想法:
当我编译它时(在 VS2010 C++ 上),我得到以下错误:
显然 zip 正在复制 std:vector 元素the_vectors
而不是传递引用,因此push_back
失败了。
有谁知道我如何让 fusion zip 传递参考而不是副本?
c++ - 如何概括精神解析器以任意顺序获取列表?
我有一个简单的解析器,可以解析整数列表或带引号的字符串。
如果我执行SIMPLE_CASE我将输入设为:
它正确解析为my_record
,其中包含一个整数列表和一个 std::string 列表。
我想将此代码修改为通用代码,以便它可以以任意顺序获取零个或多个 INT 列表和零个或多个 STR 列表,并my_record
以正确的顺序填充它们。我想要我的第二个更通用的测试用例:
解析为:
如果我运行,下面的代码可以正常工作:
但我不确定在运行此程序时如何让一般情况下工作:
sandbox.cpp 的代码