我想知道自 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);
}
};
我对吗?如果是这样,假设它可以在任何情况下使用是否安全?如果没有,我想知道是哪个。这将使生活变得更轻松,因为我不必为基本类型实现类专业化,而且它看起来更干净。