问题标签 [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 回答
1164 浏览

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 个字符,因此我将仅在此处显示前几个。该示例应该尝试在您的机器上编译和生成相同的东西。

……剪……

0 投票
2 回答
1109 浏览

c++ - 使用 Boost.Fusion 函数列表

我正在尝试将函数对象列表应用于以下代码中的某个值。但是这段代码会导致 错误
boost_1_44\boost\fusion\algorithm\iteration\detail\for_each.hpp(82): error C2064:

如何将函数对象列表应用于某个值?

0 投票
1 回答
2297 浏览

c++ - Boost Fusion / MPL:将类型从序列转换为等效any_range的序列

我想使用 Boostany_range来处理多个异构数据范围。我的数据范围的类型称为融合向量,例如:

给定这样的类型,我想编写一个模板来派生这样的进一步类型:

其中AnyRange定义为:

我已经尝试过并且失败了。这甚至可以通过 Fusion 实现吗?MPL?或者,也许我正朝着错误的方向前进any_range

0 投票
1 回答
238 浏览

c++ - 是否可以在没有 Boost.Fusion 的情况下使用 Boost.Spirit V2.x?

为了在 Boost.Spirit V2.x(尤其是 Boost.Spirit.Qi)中使用它们,真的有必要用 Boost.Fusion 包装结构/类吗?我更愿意使用语义动作来分配给成员。如果我没记错的话,这就是以前在 V1.x 中完成的方式......

计算器示例表明它仍然应该是可能的。到目前为止,我还没有找到一个很好的方法来做到这一点。

我想看看你会如何在员工示例中做到这一点。以下内容无法编译,但也许有一些方法可以使它工作:

0 投票
1 回答
298 浏览

c++ - 函数重载错误

我不明白为什么代码会这样?

测试代码在这里

问题是,为什么在第一种情况下调用空向量的 func() ?

关于此主题的文档:

boost::fusion::vector

boost::fusion::make_vector()

谢谢。

0 投票
3 回答
3937 浏览

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,

这让我觉得这个版本好像也返回一个元组,并且在某种程度上无法使用上述方法解包,这与返回一个的语法不同。

我该如何处理?

0 投票
2 回答
1141 浏览

c++ - mpl::transform on boost::fusion::tuple

以下代码不能g++ (GCC) 4.6.0 20110603 (prerelease)使用-std=c++0xand编译Boost 1.46.1。我错过了包含还是这实际上是一个错误?如果是后者,如何解决?

0 投票
1 回答
343 浏览

c++ - 增强融合问题

我在编译以下内容时遇到了麻烦(我是 fusion 的新手)。特别是,我不确定“_”(在 is_same 中)来自哪里?从 boost::lambda? 升压::mpl?我需要哪些内容才能编译?

谢谢!

0 投票
1 回答
1318 浏览

c++ - 对 boost.fusion 向量中的元素的引用

编辑 - 请忽略 - 围绕一个简单的错字解决了这个问题。我需要休息。

如何访问对升压融合向量元素的引用?

与 boost.tuples 的tuples::get<i>(variable)(返回一个引用)不同,fusion::at_c<i>(variable)返回一个常数,这给我带来了困难。

以下说明了我的问题

0 投票
2 回答
2247 浏览

boost - boost::MPL 和 boost::fusion 的区别

我是 boost::fusion 和 boost::mpl 库的新手。谁能告诉我这两个库之间的主要区别?

到目前为止,我只使用了 fusion::vector 和其他一些简单的东西。现在我想使用 fusion::map 或 MPL::map 但我不知道如何选择合适的。

我需要将简单类型映射到复杂类型(alisa 类型)。目前我有以下片段,两者都完全符合我的需要。

提升::融合:

升压::MPL:

MPL和融合有什么区别吗?是否存在一个库比另一个库更受青睐的情况?

谢谢您的回复。