2017-07-27 9 views
1

私はしばらくの間、C++ 11を使用していましたが、ユーザーがいるライブラリを読んでいる間、コードにアクセスできない場合は、移動した後に変数を使用しようとします。std :: moveを使用し、データの使用をさらに防止する

そこで、基本的

void loadData(std::string&& path); 

のようなものは、ユーザーがそれが移動されることを理解させるには十分ではないでしょう。 & &の使用は、データが移動されることを意味します。私は、コメントがユースケースを説明するために使用できることを知っていますが、多くの人がそれに注意を払っていません。

& &が表示されたら、データが移動されるか、またはstd :: moveをいつ使用する必要があり、それを署名から明示的にするかを想定しても安全ですか?

答えて

2

は、& &の使用は、データが移動されることを意味するものであろうと期待されています。

一般的に言えば、ユーザーは、左辺値のあるloadDataを呼び出すことはできません。それらは、正値またはx値を与えなければならない。したがって、渡す変数がある場合、コードは通常loadData(std::move(variable))のようになります。これは、あなたの側から何をしているかを示す良い指標です。 forward ingも使用できますが、コールサイトで引き続き表示されます。実際

は、一般的にはない右辺値の基準となるパラメータから移動する極めて失礼で話します。

関連する問題