それは実際には非常に簡単です: 可変個引数テンプレートの引数パックの unpack 内に任意の式を入れることができます:
obj.apply(someFilter(arg))...
obj.apply
これにより、コンマ区切りのリストとしての結果が得られます。その後、ダミー関数に渡すことができます。
template<typename... Args> swallow (Args&&...) {}
swallow(obj.apply(someFilter(arg))...);
コンマ区切りのリストを飲み込む。
もちろん、これはobj.apply
何らかのオブジェクトを返すことを前提としています。そうでない場合は、使用できます
swallow((obj.apply(someFilter(arg)), 0)...);
実際の (非void
) 引数を作成する
obj.apply` が何を返すかわからない場合 (結果がコンマ演算子をオーバーロードしている可能性があります)、次を使用してカスタム コンマ演算子の使用を無効にすることができます。
swallow((obj.apply(someFilter(arg)), void(), 0)...);
実際に項目を順番に評価する必要がある場合 (これは質問からはあまりありそうにないようです)、関数呼び出しを使用する代わりに、配列の初期化構文を悪用できます。
using Alias=char[];
Alias{ (apply(someFilter(args)), void(), '\0')... };