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
これは前提条件です。 –
この怠惰なデカルト商品クラスを書くと、あなたがハナに戻すことができればすばらしいことでしょう。私は遅延ビューを追加しようとしています。 'cartesian_product'を遅延的に実装するのは良い考えです。 –