C ++ 11の新機能を理解しようとしていますが、右辺値の参照に関して2つの質問があります。
関数が右辺値参照を返す例は見たことがありません(を除く
std::move
)。そうすることが理にかなっている場合はありますか?例:、int&& foo(...)
。ローカル変数を宣言するとき、または関数の引数として、constへの右辺値参照を持つことが理にかなっている場合がありますか?例:、
foo(int const&& i)
。
C ++ 11の新機能を理解しようとしていますが、右辺値の参照に関して2つの質問があります。
関数が右辺値参照を返す例は見たことがありません(を除くstd::move
)。そうすることが理にかなっている場合はありますか?例:、int&& foo(...)
。
ローカル変数を宣言するとき、または関数の引数として、constへの右辺値参照を持つことが理にかなっている場合がありますか?例:、foo(int const&& i)
。
1)関数が右辺値参照を返す例を見たことがありません(を除く
std::move
)。そうすることが理にかなっている場合はありますか?
std::move
引数を右辺値参照(および、適切な場合は)にキャストし、その引数を返す以上のことを行っていないライブラリ関数を除けば、std::forward
それほど頻繁に会うことはないと思います。
2)右辺値の参照を持つことが理にかなっている場合があり
const
ますか?
多くはありません。実際にはほとんどありません。右辺値参照は、最終的に移動したいオブジェクトにバインドする場合に使用されます。オブジェクトから移動することはできないconst
ため(移動すると、移動元のオブジェクトの状態が変更され、const
その逆が約束されるため)、ほとんど意味がありません。への右辺値参照がありconst
ます。また、への左辺値参照は右辺値にconst
もバインドできることに注意してください。ただし、そのユースケースはいくつかあります。