提升融合问题

时间:2011-06-22 15:45:44

标签: c++ boost boost-fusion

我在编译以下内容时遇到了问题(我是融合新手)。特别是,我不确定“_”(在is_same中)来自何处?来自boost :: lambda?升压:: MPL?我需要包含哪些内容才能编译?

template <typename T>
struct check
{ 
  const T& value;

  check(const T& v) : value(v) {}

  template <typename X>
  bool operator()(const fusion::pair<X,T>& data) const
  {
    return data.second == value;
  }
};

template <typename T1, typename T2, typename P>
bool new_match(const P& p, const T2& values)
{
  fusion::for_each(fusion::filter_if<boost::is_same<_, T2> >(p), check(values));
  return true; // not finished, just trying to compile
}

谢谢!

1 个答案:

答案 0 :(得分:3)

是的,确实应该是boost::mpl::_,如the fusion::filter_if documentation所示,因此您只需要#include <boost/mpl/placeholders.hpp>和资格或使用声明将_带入范围。