为什么一个类/函数有两个重载,一个重载左值,一个重载右值?

例如,从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 。

08-16 01:26