は、私は次のクラス定義を持っていると仮定します。(同じタイプの)指定された数の要素でboost :: tupleを作成するにはどうすればよいですか?
template <unsigned int N>
class foo
{
boost::tuples::tuple<...> bar;
};
がN
コンパイル時の定数を考えると、私は指定されたタイプのN
要素を保持しているタプルであることをbar
の種類を拡大したいと思います。つまり、foo<2>::bar
のタイプはboost::tuples::tuple<T, T>
となります。私はこれにBoost.MPLを使用することができると推測していますが、正確なシーケンスはまだわかりません。私は何ができると思う:
template <typename T, int N>
struct type_repeater
{
typedef typename boost::mpl::fold<
boost::mpl::range_c<T, 0, N>,
boost::mpl::vector<>,
boost::mpl::push_back<_1, T>
>::type type;
};
だからそのインスタンス
type_repeater<T, 2>::type
ため
boost::mpl::vector<T, T>
に相当します。私はそのタイプのリストを取り、それをタプルの引数リストに挿入することができるかどうかはわかりません。これは可能ですか?
C++ 11にアクセスできない場合は、これを高める必要はありません。代わりにC++ 11を使用するバージョンでOKでしょうか? – OmnipotentEntity
いずれのケースでも最高の解決策を聞いていますが、結局は少なくともC++ 03の実装が必要になります。 –