为什么一个类/函数有两个重载,一个重载左值,一个重载右值?
例如,从this视频中,它说vector<T>::push_back
有两个重载
void push_back( const T& value );
void push_back( T&& value );
为什么我们不能只按值分配一个重载,
void push_back( T value );
如果是左值,则将复制值;如果是右值,则将 move 值。这不是标准所保证的工作方式吗?
最佳答案
根据您的值(value)主张,从技术上讲,应该是复制+ move 或 move + move ,而其他两个重载则是单个复制或单个 move 。