Anlatılmayan 2 parçam var. Bir kümenin diğerinin alt kümesi olup olmadığını kontrol etmek için deyimsel bir yol var mı?Tuple türlerinin birbirinin alt kümeleri olup olmadığını kontrol edin
Bu, hana::tuple_c
yerine başka bir tür gerektirirse, bu da iyi olur. Aslında, şu anki girişim std::tuple
'dan oluşuyor, ancak her iki şekilde çalışamıyorum. (Ama olası benzer bir şey olması gerektiğini hissediyorum) DEĞİL çalışır
Kodu:
#include <boost/hana.hpp>
using namespace boost;
using SetA = hana::tuple_c<int, char, float>;
using SetB = hana::tuple_c<int, float>;
static_assert(
hana::is_subset(SetB, SetA),
""
);
Benim şu anki geçici çözüm Bir kavşak yapmak boost::mpl
kullanır ve sonra sonuçları karşılaştırın. Bu çalışır, ancak ben saf boost::hana
solüsyon ilgileniyorum: Doğru boost::hana
kullanmıyorsanız
#include <boost/mpl.hpp>
using namespace boost;
using SetA = mpl::set<int, char, float>;
using SetB = mpl::set<int, float>;
using Intersection = typename mpl::copy_if<
SetA,
mpl::has_key< SetB, mpl::_1 >,
mpl::back_inserter< mpl::vector<> >
>::type;
// since Intersection is a vector, subset also needs vector type
using Subset = typename mpl::copy<
SetB,
mpl::back_inserter< mpl::vector<> >
>::type;
static_assert(std::is_same<Intersection, Subset>::value, "");