问题标签 [boost-mpl]

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 回答
205 浏览

c++ - 如何获取相对于运行时索引的类型?

假设我有一个boost::mpl::list< A, B, C ...>.

在运行时给定索引值,我如何访问其中一种类型?甚至可能吗?

0 投票
3 回答
965 浏览

c++ - Boost MPL 为对象序列化生成代码?

我想为

通过查看 mpl 序列,但我需要能够识别对象并将其检索回来,我不知道如何获取它成员的名称,我必须知道它吗?

代码应该看起来像

我想通过用户只定义一个与对象布局对应的mpl序列来生成上面的代码,是否可行,你能给我一些提示吗?

我的目标是:

用户mpl::vector<String, int, long, char>为上述对象定义,我metaprogram可以生成所需的编码。

0 投票
3 回答
2224 浏览

c++ - 使用 boost-mpl 的 c++ 编译时字符串连接

我试图在编译时使用 boost-mpl 连接字符串,但我从 gcc 得到错误。这是样本 -

所以,我想要实现的是:

问题是 gcc 中的上述代码会引发以下错误:

任何人都可以指出上述代码的问题并解释正确的方法吗?谢谢

编辑 1:更正了格式和一些错别字

编辑 2:在 Lambdageek 之后,安迪的建议代码确实可以编译,但是当我尝试打印结果时

,编译器抱怨 -

我承认我对模板编程很陌生,所以我确信问题一定是基本的。感谢所有的帮助

编辑 3:更改了转换器结构中的 push_back 行。

错误:

0 投票
2 回答
987 浏览

c++ - boost::mpl::vector - 获取类型的基本偏移量

mpl::vector在对它执行 a 之后是否有可能获得 a 的偏移量mpl::find<seq,type>

换句话说,我想做的编译时间等同于:

如果做不到这一点,我的类型mpl::vector有一个type_trait<T>::ordinalconst 硬编码,如果可能的话,我想避免这种情况。

重要说明,我也在boost::variant从向量创建一个,我看到我可以通过执行运行时函数来获得序数variant::which()。但是,这需要我创建一个具有默认初始化值的虚拟对象。这是相当难看的。如果您知道其他使用变体的方法,那也可以解决我的问题。

0 投票
1 回答
385 浏览

c++ - boost-mpl 比较迭代器

天哪,在使用 mpl 库时,弄清语法是一个偶然的经历(上一个问题)。比较两个 mpl 迭代器的正确语法是什么 - 即it != v.end()test ?

如果我删除断言,仿函数将编译并执行良好。

0 投票
1 回答
542 浏览

c++ - 使用 boost mpl 插入器迭代器的意外结果

我曾期望以下内容会给出相同的结果:

但他们没有。

知道这里发生了什么吗?

我想使用第二种方法来构造Example类型的 mpl::vector,其中:

但我无法让它工作。

非常感谢

0 投票
1 回答
923 浏览

c++ - 元编程:继承自 boost mpl::vector 中的每个类

我希望从 boost mpl::vector 中包含的一组类继承。这可能吗?

具体来说,我希望扩展test任意多个模板参数,作为 mpl::vector 传递。

如果我知道只有两个参数,那么我可以简单地写:

是否可以对任意 mpl::vector 执行此操作?

我的测试程序如下所示:

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 投票
2 回答
2247 浏览

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

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

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

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

提升::融合:

升压::MPL:

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

谢谢您的回复。

0 投票
1 回答
1615 浏览

c++ - boost::fusion::result_of::as_set(或 as_vector)从复杂(嵌套)mpl 序列转换而来

从简单的 mpl 序列(如 ::boost::mpl::vector< node_a, node_b, node_c >)到融合序列的转换工作正常。但是当我尝试将后处理的 mpl 序列从复杂的 mpl 序列(如嵌套的 mpl 向量)转换为融合序列(通过 result_of::as_set 或 as_vector)时,出现编译时错误。

“restored_set_type”的打印结果是:

, 但它似乎丢失了一些类型信息,这使得它不同于简单的 mpl 序列 ::boost::mpl::vector< node_c, node_b, node_a > 。

我是否遗漏了任何要指定的内容,例如标签、大小或?谢谢!