型のリストをフィルタリングしようとしていますが、動作していないようです。私はここで何か間違ったことをやっていると確信している、ここで私はそれを再現するために作成したテストです:boost :: hanaを使用した型のリストのフィルタリング
#include <iostream>
#include <boost/hana.hpp>
#include <boost/hana/ext/std/tuple.hpp>
struct X {
};
struct Y {
};
struct Z {
};
int main(int argc, char **argv) {
namespace hana = boost::hana;
constexpr std::tuple<X, Y, Z> list;
constexpr std::tuple<X> filterlist;
auto t = hana::filter(list, [&](auto t) {
return hana::not_(hana::contains(filterlist, hana::decltype_(t)));
});
std::cout << "filtered list contains " << hana::size(t) << " items, expected 2 items" << std::endl;
return 0;
}
基本的に私が欲しいもの: 私はタイプのリストを持っていると私はリストを返したいですフィルタリストに含まれていない項目。したがって、この場合はstd::tuple<Y, Z>
である必要があります。
このプログラムの現在の出力は次のとおりです。 フィルタリングされたリストは、3つの項目が含まれている、問題はあなたがタイプ(decltype_(X{}) == type<X>{}
が)であるかどうかをチェックしているということである2つの項目
よろしく、Matthijs