我需要構建n個類型的元組。這n個類型是n個其他類型的值類型。考慮這個片斷:如何從參數包中定義值類型的元組
#include <boost/hana.hpp>
namespace hana = boost::hana;
template<class... Types>
class CartesianProduct
{
public:
CartesianProduct(Types... args) : sets(args...) {}
hana::tuple<Types...> sets;
hana::tuple<Types...::value_type> combination; // does not work obviously... but wo can this be done?
};
的這個應用程序的目的是,像這樣:我通過這個類可能是不同類型的容器的參數包。這個類將這些容器放入一個元組sets
。該類還有一個字段combination
,它是容器傳遞給該類的許多元素的元組。但是元素的類型是不同容器的值類型。
然後,該類將懶散地構建傳遞給它的容器的笛卡爾積,並將當前組合存儲在combination
中。但是我怎樣才能真正以可變的方式獲得容器的值類型?
是否所有類型都有'value_type'? – StoryTeller
嗯,我把這作爲一個先決條件。 –
如果你確實寫了這個懶惰的笛卡爾產品類,那麼如果你能將它貢獻給Hana,那將是非常棒的。我期待添加懶惰的視圖,並且它本身可以懶惰地實現'cartesian_product'是一個好主意。 –