rvalue引数を持つ関数がいくつかあります。 rvalue引数も持つ他の関数があります。我々は右辺値としてパラメータを渡すためにstd::move
を使用しているため、私はstd::move
を使用std :: forward非テンプレート関数
void inner(int&& a)
{/* ... */}
void outer(int&& a)
{
inner(std::move(a));
}
:最初の関数は、第2の機能を呼び出します。しかし、私の同僚は、私たちが前方にここに右辺値参照を(移動しない)ので、std::forward
はこちらより適切であることを言った:
void outer(int&& a)
{
inner(std::forward(a));
}
が、それは本当ですか?どちらがより正しいですか?
あなたの 'std :: forward'の例は、推論されていないコンテキストのためにコンパイルされないので、私はそれを使わないと思います。 – LogicStuff