3

C ++ 11の新機能を理解しようとしていますが、右辺値の参照に関して2つの質問があります。

  1. 関数が右辺値参照を返す例は見たことがありません(を除くstd::move)。そうすることが理にかなっている場合はありますか?例:、int&& foo(...)

  2. ローカル変数を宣言するとき、または関数の引数として、constへの右辺値参照を持つことが理にかなっている場合がありますか?例:、foo(int const&& i)

4

1 に答える 1

5

1)関数が右辺値参照を返す例を見たことがありません(を除くstd::move)。そうすることが理にかなっている場合はありますか?

std::move引数を右辺値参照(および、適切な場合は)にキャストし、その引数を返す以上のことを行っていないライブラリ関数を除けば、std::forwardそれほど頻繁に会うことはないと思います。

2)右辺値の参照を持つことが理にかなっている場合がありconstますか?

多くはありません。実際にはほとんどありません。右辺値参照は、最終的に移動したいオブジェクトにバインドする場合に使用されます。オブジェクトから移動することはできないconstため(移動すると、移動元のオブジェクトの状態が変更され、constその逆が約束されるため)、ほとんど意味がありません。への右辺値参照がありconstます。また、への左辺値参照は右辺値にconstもバインドできることに注意してください。ただし、そのユースケースはいくつかあります。

于 2013-02-17T15:21:22.020 に答える