【问题标题】:mpl style copy_if meta-function for variadic template vector用于可变参数模板向量的 mpl 样式 copy_if 元函数
【发布时间】:2010-12-31 22:57:23
【问题描述】:

我有一个可以与常规 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;
};

我正在尝试使用可变参数模板向量 (mpl::vector) 对其进行编译。为此,我正在使用此处找到的可变参数模板向量的实现:https://svn.boost.org/svn/boost/sandbox/variadic_templates

我在 repo 中找不到可用的 copy_if、remove_if 和 count_if 实现,尽管有一些测试。那些元程序在那里,我只是无法找到它们?或者,您能否帮我实现其中一个,以便它也支持 mpl 占位符。提前感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    让我们从一个提示开始:折叠方式比人们想象的要强大。例如,计算序列中元素的数量只需应用初始状态为 0 的 fold 以及获取状态(到目前为止的元素数量)和元素并返回 the_state + 1 的函数。

    现在你可以写count_if吗? (显然使用fold

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多