0

以下をコンパイルするのに問題があります(私はフュージョンが初めてです)。特に、"_" (is_same 内) がどこから来たのかわかりません。ブースト::ラムダから? Boost::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
}

ありがとう!

4

1 に答える 1

3

はい、ドキュメントboost::mpl::_に示されているように、それは確かに意図されているため、スコープに持ち込むには修飾または using 宣言のみが必要です。fusion::filter_if#include <boost/mpl/placeholders.hpp>_

于 2011-06-22T19:53:10.167 に答える