问题标签 [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.
boost - 尝试编译 Spirit.Qi 解析器的问题
下面是一个完全独立的示例。问题似乎是第 84-89 行 - 如果这些行被注释掉,则示例编译。我要解析的是文件的每一行,有五个用冒号分隔的项目,最后三个项目是可选的。单个函数接受 a boost::filesystem::file
,将其吸入 usingboost.interprocess
并解析它。
我想要解析的示例:
a:1
a:2:c
a:3::d
a:4:::e
a:4:c:d:e
结果应该存储在 , 中vector<file_line>
,并且file_line
是一个有五个成员的结构,最后三个是可选的。这是代码和错误:
代码
来自 MSVC 10 的错误消息
由于问题限制为 30,000 个字符,因此我将仅在此处显示前几个。该示例应该尝试在您的机器上编译和生成相同的东西。
……剪……
c++ - 使用 Boost.Fusion 函数列表
我正在尝试将函数对象列表应用于以下代码中的某个值。但是这段代码会导致
错误
boost_1_44\boost\fusion\algorithm\iteration\detail\for_each.hpp(82): error C2064:
如何将函数对象列表应用于某个值?
c++ - Boost Fusion / MPL:将类型从序列转换为等效any_range的序列
我想使用 Boostany_range
来处理多个异构数据范围。我的数据范围的类型称为融合向量,例如:
给定这样的类型,我想编写一个模板来派生这样的进一步类型:
其中AnyRange
定义为:
我已经尝试过并且失败了。这甚至可以通过 Fusion 实现吗?MPL?或者,也许我正朝着错误的方向前进any_range
。
c++ - 函数重载错误
我不明白为什么代码会这样?
问题是,为什么在第一种情况下调用空向量的 func() ?
关于此主题的文档:
谢谢。
c++ - 提升::精神::气。如何将内联解析器表达式变成独立的语法,以及如何解包它们生成的元组?
我正在使用 QI 和 Phoenix,我想编写一个返回 4 个布尔值的小语法,这些布尔值将用作语义操作中函数调用的参数。
我有几个需要这些东西的功能,到目前为止我已经使用了这种方法:
虽然它本身没问题,但在整个地方使用它只是丑陋和令人困惑,即使“使用”命名空间部分也是如此。
这就是为什么我想把这个表达式提取成一个独立的语法。
所以我尝试了这个(归功于 ildjarn 的测试平台):
除非fourBools[phx::bind(&noDice, spirit::_1)]
用fourBools[phx::bind(&worksFine, spirit::_1)]
.
这意味着,我的问题是解包参数以匹配要调用的函数的签名,因为参数的数量在签名级别不同(四个布尔值的一个元组,而不是四个布尔值)。
是否可以直接使用 phoenix 占位符进行解包,而不是编写将元组转换为需要将它们分开的现有函数的单独参数的包装器?如果是,那将是什么语法?毕竟,当被占位符( qi::_bool >> qi::_bool >> qi::_bool >> qi::_bool)
“解包”时,像这样的内联版本可以正常工作。spirit::_1 - spirit::_4,
这让我觉得这个版本好像也返回一个元组,并且在某种程度上无法使用上述方法解包,这与返回一个的语法不同。
我该如何处理?
c++ - mpl::transform on boost::fusion::tuple
以下代码不能g++ (GCC) 4.6.0 20110603 (prerelease)
使用-std=c++0x
and编译Boost 1.46.1
。我错过了包含还是这实际上是一个错误?如果是后者,如何解决?
c++ - 增强融合问题
我在编译以下内容时遇到了麻烦(我是 fusion 的新手)。特别是,我不确定“_”(在 is_same 中)来自哪里?从 boost::lambda? 升压::mpl?我需要哪些内容才能编译?
谢谢!
c++ - 对 boost.fusion 向量中的元素的引用
编辑 - 请忽略 - 围绕一个简单的错字解决了这个问题。我需要休息。
如何访问对升压融合向量元素的引用?
与 boost.tuples 的tuples::get<i>(variable)
(返回一个引用)不同,fusion::at_c<i>(variable)
返回一个常数,这给我带来了困难。
以下说明了我的问题
boost - boost::MPL 和 boost::fusion 的区别
我是 boost::fusion 和 boost::mpl 库的新手。谁能告诉我这两个库之间的主要区别?
到目前为止,我只使用了 fusion::vector 和其他一些简单的东西。现在我想使用 fusion::map 或 MPL::map 但我不知道如何选择合适的。
我需要将简单类型映射到复杂类型(alisa 类型)。目前我有以下片段,两者都完全符合我的需要。
提升::融合:
升压::MPL:
MPL和融合有什么区别吗?是否存在一个库比另一个库更受青睐的情况?
谢谢您的回复。