可变参数模板向量的mpl风格copy_if元函数

时间:2010-12-31 22:57:24

标签: boost metaprogramming c++11 variadic-templates boost-mpl

我有一个使用常规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占位符。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

让我们从一个提示开始:折叠方式比人们想象的更强大。例如,计算序列中元素的数量只包括将fold应用于初始状态0和应用状态的函数(到目前为止的元素数量)和元素,并返回{{1} }。

现在可以写the_state + 1了吗? (显然使用count_if

如果你没有成功,我会帮助你,直到你成功。