はい:私は多少このようにそれを使用したい明確にする
。
まず、方法。それで、なぜあなたはそれをしてはいけないのですか? K、インターリーブさのN個のグループにkNの要素とグループそれのリストを取り
書き込み再グループ化を、:それを行うにはどのように
。グループはtemplate<class...>struct types{};
です。 template<class...>class Z
とグループのclass...
(別名types<...>
)を取り、結果のtypes<...>
を返す、束の各々の内容Z
を適用
Applyを書き込み、。
types<...>
の内容をtemplate<class A, class B> struct and_types:std::integral_constant<bool, A{}&&B{}>{};
で折りたたみます。
これはほとんど無意味なので、私はそれを実装しません。まともなメタプログラミングライブラリで簡単にできるはずですが、上記の操作の大部分は不安定です。
なぜあなたはすべきではない
しかし、実際に、あなたの例を考えると、ちょうどこの操作を行います。その後
template<class...Ts>
struct and_types:std::true_type{};
template<class T0, class...Ts>
struct and_types<T0,Ts...>:std::integral_constant<bool, T0{} && and_types<Ts...>{}>{};
を:
std::enable_if_t<and_types<std::is_convertible<Args2, Args1>...>{}>
は仕事をしていません。すべてのシャフリングはちょうどノイズです。 C++ 1Zから倍...
支援を
は、我々としてもand_types
を取り除くだけ&&
と...
を使用します。
場合は使用して
場合6つのテンプレートは 'がある場合はどう(T1、T2、T3、T4、T5、T6) '? 'is_convertible && is_convertible && is_convertible 'というように、隣人をグループ化する方が良いかもしれないようです。 –
erip
@erip次に、2つのパラメータパックから引数をインターリーブする必要があります。 – user697683
なぜインターリーブする必要がありますか? – erip