C++ 11以降、どのような状況でパラメーターで const 参照を使用する必要があるのか 疑問に思っていました。移動のセマンティクスを完全には理解していませんが、これは正当な質問だと思います。この質問は、値を「読み取る」ことだけが必要な場合に、作成中のコピーが const 参照に置き換えられる状況 (例: const メンバー関数の使用) のみを対象としています。
通常、私は次のような(メンバー)関数を書きます:
#include <vector>
template<class T>
class Vector {
std::vector<T> _impl;
public:
void add(const T& value) {
_impl.push_back(value);
}
};
class T
しかし、次のように記述し、もちろん移動コンストラクターを実装する場合、コンパイラーが移動セマンティクスを使用して最適化すると想定するのは安全だと考えています。
#include <vector>
template<class T>
class Vector {
std::vector<T> _impl;
public:
void add(T value) {
_impl.push_back(value);
}
};
私は正しいですか?もしそうなら、それはどのような状況でも使用できると仮定しても安全ですか? そうでない場合は、どれか知りたいです。たとえば、基本的な型のクラスの特殊化を実装する必要がないため、見た目がずっときれいになるだけでなく、これにより作業がはるかに簡単になります。