问题标签 [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.
templates - 在 C++ 中模板化任意长度的类型列表
这是我希望能够输入的内容:
Boost::mpl 有序列,可以让你这样做,但我不想这样做:
我不介意它内部“丑陋”或冗长,但我希望 watchKeys 最终使用的方式非常简单和直观。我也不知道 boost 是如何做到的,但这似乎是因为我和模板之间有一层宏。
我该怎么办?我不希望为每种类型的类型制作巨大的模板列表,但如果这是唯一的,那就是唯一的方法......
编辑:我已经相当确定没有办法做我想做的事(几乎,但你不能有可变数量的宏参数),但问题仍然在产生有用和信息丰富的答案。
c++ - c++递归mpl::equal问题?
我需要一个支持类型递归的类似 mpl::equal 的过程。
上面的编译很好,但是如果我在 mpl::transform 或 mpl::fold 中使用它,visual studio 2010 rc1 会抱怨。
然而,这些工作......
是 mpl::equal 不适用于动态生成的递归类型,还是我的语法有问题?
任何建议将不胜感激。
c++ - 如何循环通过 boost::mpl::list?
据我所知,这是
我该如何完成?(我不知道我是否应该使用 std::for_each,只是基于此处另一个答案的猜测)
c++ - 如何将 mpl::transform 应用于 mpl::string?
我正在尝试将转换应用于mpl::string
,但无法编译。我正在使用 MS VC++2010 和 Boost 1.43.0。编码:
我已在http://paste.ubuntu.com/447759/上发布了完整的错误消息。
MPL 文档说mpl::transform
需要 a Forward Sequence
,并且mpl::string
是 a Bidirectional Sequence
,我认为它是一种Forward Sequence
,所以我认为它会起作用。
我做错了什么,还是这完全不可能?如果是这样,为什么?
谢谢!
c++ - 拥有可变数量的模板参数的最佳方法是什么?
请考虑这个 - 可能写得不好 - 的例子:
和 :
有了这个,我可以使用以下语法简单地添加一个回调:
它完美无缺。我的“命令”类做了更多所有命令共有的事情,例如实现撤消、重做、进度报告等,但为了便于阅读,我将其从代码中删除。
现在我的问题很简单:有没有办法重写命令类,以便我可以替换这个调用:
通过类似的东西:
我一直在考虑这个问题,但我有一个概念上的问题:我想模板化我的 Command 类,比如
但显然,这里有一个问题:语法template <typename R,typename T1, typename T2, ..., typename Tn>
不合法 C++ ,AFAIK。
我是否必须编写 n 个版本的命令,例如:
等等 ?(甚至不确定这是否真的有效)
还是有另一种更优雅的方式来做到这一点?这里提到的语法在那里有用吗?(函数 f;)
我一直在查看 Loki 的类型列表,他们似乎完成了这项工作。但是我在Boost中找不到任何东西。我在网上看到 boost::mpl 是一个想要用来实现类型列表的工具,但我对 MPL 文档有点困惑?
对此有何见解?雷加兹,D.
c++ - 使用 boost::mpl::lambda 从基于静态 const 成员变量的 boost::mpl::list 中删除类型
我有一个类型列表定义为:
我想创建一个不包含任何水果的第二个列表,即从第一个列表形成的结果列表将包含一个单一类型的 Brick。Fruit 通过定义在类型中的静态 const 变量来识别,例如:
我目前有一个解决方案,涉及创建一个元函数类,并使用boost::mpl::remove_if
. 我相信我应该能够通过使用 boost::mpl::lambda 来消除对单独RemoveFruit
结构的需求,从而使其更加优雅。关于如何做到这一点的任何建议?
目前的完整代码:
c++ - 使用 boost::mpl 的类型组合
我有一个类型列表,我想从中构造包含两个元素的所有组合的列表。例如:
在这里,pair<T1,T2>
可能是std::pair<T1,T2>
,或mpl::vector<T1,T2>
。这该怎么做?当我们考虑到这一点时,我也会有兴趣删除重复项pair<T1, T2> == pair<T2, T1>
。
谢谢。
c++ - 如何获取变量的类型?
例子:
谢谢!
c++ - C ++ boost变体问题
我知道它boost::variant
使用boost::mpl
了它背后的东西并且有一个与 mpl 兼容的 typedef types
。
假设我有一个简单的 typedef:typedef boost::variant<bool, int> Variant;
现在我有了另一个模板函数,比如说:
我希望这个函数在两种情况下表现不同:当它的T
一部分Variant::types
和不是的时候。
显然,我必须做类似的事情
我唯一不知道的是这个CONDITION
。
现在 - 我确实认为如果T
是Variant::types
.
有人知道怎么做吗?
c++ - 从 boost::mpl::vector 获取 boost::fusion::vector 的索引
我开始使用 boost fusion 和 mpl 库,但遇到了一个非常简单的问题。
我声明了以下类型:
现在我想编写一个函数来获取来自 FusionVector 的值。
该函数按预期工作,但我想从 boost::mpl 向量中获取索引并在此函数中使用它,而不是将其作为模板参数传递给函数。但到目前为止我还没有弄清楚如何做到这一点。
有人可以给我一个提示吗?