どのように1は、可変引数関数の中ですべての引数に::前方にはstd呼ぶだろうか?
-
26-09-2019 - |
質問
私は、一般的なオブジェクトファクトリを書き込み、可変長テンプレートを作るためにブーストプリプロセッサメタライブラリを使用して(2010を使用して、それが彼らをサポートしていません)されました。 C ++ 0Xが出てくると私は本当の可変引数テンプレートでこれを行うと、標準のコンパイラを持っていたとき...私の機能は完璧な転送を行うにはrvalを参照してstd::forward
を使用していますし、それは私が考えるようになりました。どのようにしかし、私は、引数にstd::forward
を呼ぶだろう?
template <typename ...Params>
void f(Params... params) // how do I say these are rvalue reference?
{
y(std::forward(...params)); //? - I doubt this would work.
}
私は考えることができる唯一の方法は、の...のparams手動でアンパックが必要になると私はどちらかまだかなりありませんよ。仕事と迅速な構文がありますか?
解決
あなたはどうなるます:
template <typename ...Params>
void f(Params&&... params)
{
y(std::forward<Params>(params)...);
}
...
はかなり「左に何取ると、各テンプレートパラメータのために、それに応じて解凍します。」と言います
所属していません StackOverflow