関数f
はtransform
関数を使用してWrapper
に変換できる引数を受け取り、f2
を呼び出す必要があります。 f2
は、Wrapperのような引数の可変数を受け取ります。別の関数を呼び出すために、バリデリックなテンプレート引数を別の型に変換するにはどうすればよいですか?
template <typename T>
Wrapper transform(T&& value) {
return Wrapper(std::forward<T>(value));
}
template <typename... Args>
Wrapper f2(Args&&... args) {
// All arguments must be Wrappers
// More code
}
template <typename... Args>
Wrapper f(Args&&... args) {
// Arguments can be transform to Wrapper using a transform function.
return f2(/* For each arg in args -> transform(std::forward<Args>(args)...)*/); // Problem!
}
通常は前のパラメータを変換することであり、直接f2
を呼び出すことが、私は国民にtransform
機能を公開する必要はありません。
これを実現する方法はありますか?transform
が公開されていませんか?
return f2(transform(std :: forward(args))...)を試しましたか? –
linuxfever
@ chema989 - 申し訳ありませんが、私はundestand ... linuxfeverからの提案は正しいと思われます: 'f2(transform(std :: forward(...))、' f2() '一連の 'wrapper'を使って' f2() 'の署名に完全にマッチします。 –
max66
@ max66あなたの答えを確認します。 – chema989