1. ホーム
  2. c++

[解決済み] RV値参照(&&)を返すと便利なケースはありますか?

2023-07-05 19:56:32

質問

ある関数が はRValue Referenceを返さなければなりません。 ? テクニックやトリック、イディオムやパターン?

MyClass&& func( ... );

の危険性は承知しています。 参照を返す を返すことの危険性は承知していますが、ともかくやってしまうことがありますよね? T& T::operator=(T) は一つの典型的な例です。しかし、どうでしょう。 T&& func(...) ? そうすることで得られる一般的な場所はあるのだろうか?おそらく、ライブラリやAPIのコードを書くときは、単なるクライアントのコードとは異なるのでしょうか?

どのように解決するのですか?

適切な場面もいくつかありますが、比較的まれなケースです。 そのケースは、クライアントがデータ メンバから移動できるようにしたいときに、ある例で出てきます。 たとえば

template <class Iter>
class move_iterator
{
private:
    Iter i_;
public:
    ...
    value_type&& operator*() const {return std::move(*i_);}
    ...
};