可変タプルを関数の引数として使用する方法と、それを初期化する方法が可能であれば、少し混乱しています。
template <typename T, Arg ...>
void foo (int a, std::tuple<T, sizeof(Arg)> TupleTest);
...
foo(TupleTest(2, "TEST", 5.5));
c++0x を使用してどのように実装できますか?
テンプレート引数の数を取得する必要はありません。これを行うだけです:
template <typename... T>
void foo(int a, std::tuple<T...> TupleTest);
// make_tuple so we don't need to enter all the type names
foo(0, std::make_tuple(2, "TEST", 5.5));
あなたは何をしたいsizeof
ですか?可変個展開を使用するだけです:
template <typename T, typename Arg ...>
void foo(int a, std::tuple<T, Arg...> TupleTest);
ここでTupleTest
は、型名ではなく、引数の名前です。そのため、メソッドを呼び出すときは使用しないでください。
foo(42, std::tuple<int, char const*, double>(2, "TEST", 5.5));
最後に、type 引数T
は (空のテンプレート リストを明示的に禁止したい場合を除いて) 本当の目的を果たさないので、失うことなく削除することができます。