私はこのライブラリ用のAPIを設計しています。任意の数の引数をとるこの関数があります(テンプレート化されています)。私は、これら2つは、(両方向に)交換可能である知るvariadic-template APIを設計するときに、タプルやパラメータパックを取るほうがいいですか?
template<typename... Ts>
void foo(bar_t bar, std::tuple<Ts...> params);
:なるように、
template<typename... Ts>
void foo(bar_t bar, Ts... params);
又は、代替的に:私があることを定義することができ
C++11: I can go from multiple args to tuple, but can I go from tuple to multiple args?
をそれほど両方のオプションはまったく同じですが、私は他のものよりも1つの異形を好むべきですか、それとも味覚/個人的なスタイルの問題ですか?
異種初期化リスト '{t1、t2、t3、...} 'が' std :: tuple '型* (現在の言語の一部ではない) 'T1、T2 ...'の控除*の場合、最初の選択肢はもっと一般的ですが、他の理由では不便です。 2番目のオプションは、呼び出し元に明示的な 'std :: tuple <...>'または 'std :: make_tuple'関数について知らせるものです。 –
alfC