我有一个使用常规boost mpl工作正常的元程序。它看起来更像是以下内容。
template <class Vector, class ResultKind, class Custom>
struct FilterChildrenIfNotOk
{
typedef typename
copy_if<Vector,
or_<is_same<boost::mpl::placeholders::_1, ResultKind>,
IsOk<boost::mpl::placeholders::_1,
ResultKind,
Custom> > >::type type;
};
我正在尝试使用variadic模板向量(mpl :: vector)进行编译。为此,我正在使用这里找到的变量模板向量的实现:https://svn.boost.org/svn/boost/sandbox/variadic_templates
我在repo中找不到copy_if,remove_if和count_if的可用实现,尽管有一些测试。那些元程序在那里,我只是无法找到它们吗?或者,您可以帮我实现其中一个,以便它也支持mpl占位符。感谢您的帮助。
答案 0 :(得分:1)
让我们从一个提示开始:折叠方式比人们想象的更强大。例如,计算序列中元素的数量只包括将fold
应用于初始状态0和应用状态的函数(到目前为止的元素数量)和元素,并返回{{1} }。
现在可以写the_state + 1
了吗? (显然使用count_if
)
如果你没有成功,我会帮助你,直到你成功。