質問

私は、一般的なオブジェクトファクトリを書き込み、可変長テンプレートを作るためにブーストプリプロセッサメタライブラリを使用して(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)...);
}

...はかなり「左に何取ると、各テンプレートパラメータのために、それに応じて解凍します。」と言います

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top