问题标签 [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.
c++ - 如何获取相对于运行时索引的类型?
假设我有一个boost::mpl::list< A, B, C ...>
.
在运行时给定索引值,我如何访问其中一种类型?甚至可能吗?
c++ - Boost MPL 为对象序列化生成代码?
我想为
通过查看 mpl 序列,但我需要能够识别对象并将其检索回来,我不知道如何获取它成员的名称,我必须知道它吗?
代码应该看起来像
我想通过用户只定义一个与对象布局对应的mpl序列来生成上面的代码,是否可行,你能给我一些提示吗?
我的目标是:
用户mpl::vector<String, int, long, char>
为上述对象定义,我metaprogram
可以生成所需的编码。
c++ - 使用 boost-mpl 的 c++ 编译时字符串连接
我试图在编译时使用 boost-mpl 连接字符串,但我从 gcc 得到错误。这是样本 -
所以,我想要实现的是:
问题是 gcc 中的上述代码会引发以下错误:
任何人都可以指出上述代码的问题并解释正确的方法吗?谢谢
编辑 1:更正了格式和一些错别字
编辑 2:在 Lambdageek 之后,安迪的建议代码确实可以编译,但是当我尝试打印结果时
,编译器抱怨 -
我承认我对模板编程很陌生,所以我确信问题一定是基本的。感谢所有的帮助
编辑 3:更改了转换器结构中的 push_back 行。
错误:
c++ - boost::mpl::vector - 获取类型的基本偏移量
mpl::vector
在对它执行 a 之后是否有可能获得 a 的偏移量mpl::find<seq,type>
?
换句话说,我想做的编译时间等同于:
如果做不到这一点,我的类型mpl::vector
有一个type_trait<T>::ordinal
const 硬编码,如果可能的话,我想避免这种情况。
重要说明,我也在boost::variant
从向量创建一个,我看到我可以通过执行运行时函数来获得序数variant::which()
。但是,这需要我创建一个具有默认初始化值的虚拟对象。这是相当难看的。如果您知道其他使用变体的方法,那也可以解决我的问题。
c++ - boost-mpl 比较迭代器
天哪,在使用 mpl 库时,弄清语法是一个偶然的经历(上一个问题)。比较两个 mpl 迭代器的正确语法是什么 - 即it != v.end()
test ?
如果我删除断言,仿函数将编译并执行良好。
c++ - 使用 boost mpl 插入器迭代器的意外结果
我曾期望以下内容会给出相同的结果:
但他们没有。
知道这里发生了什么吗?
我想使用第二种方法来构造Example
类型的 mpl::vector,其中:
但我无法让它工作。
非常感谢
c++ - 元编程:继承自 boost mpl::vector 中的每个类
我希望从 boost mpl::vector 中包含的一组类继承。这可能吗?
具体来说,我希望扩展test
任意多个模板参数,作为 mpl::vector 传递。
如果我知道只有两个参数,那么我可以简单地写:
是否可以对任意 mpl::vector 执行此操作?
我的测试程序如下所示:
c++ - mpl::transform on boost::fusion::tuple
以下代码不能g++ (GCC) 4.6.0 20110603 (prerelease)
使用-std=c++0x
and编译Boost 1.46.1
。我错过了包含还是这实际上是一个错误?如果是后者,如何解决?
boost - boost::MPL 和 boost::fusion 的区别
我是 boost::fusion 和 boost::mpl 库的新手。谁能告诉我这两个库之间的主要区别?
到目前为止,我只使用了 fusion::vector 和其他一些简单的东西。现在我想使用 fusion::map 或 MPL::map 但我不知道如何选择合适的。
我需要将简单类型映射到复杂类型(alisa 类型)。目前我有以下片段,两者都完全符合我的需要。
提升::融合:
升压::MPL:
MPL和融合有什么区别吗?是否存在一个库比另一个库更受青睐的情况?
谢谢您的回复。
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 > 。
我是否遗漏了任何要指定的内容,例如标签、大小或?谢谢!