8

クラス/関数に2つのオーバーロードがあります。1つは左辺値用で、もう1つは右辺値用です。

たとえば、このビデオから、2つのオーバーロードがあると言われていますvector<T>::push_back

void push_back( const T& value );
void push_back( T&& value );

値によってオーバーロードを1つだけ持つことができないのはなぜですか。

void push_back( T value );

左辺値の場合は値がコピーされ、右辺値の場合は値が移動されます。これは、それがどのように機能し、標準によって保証されているかではありませんか?

4

2 に答える 2

8

バリュープロポジションでは、技術的にはコピー+移動または移動+移動がありますが、他の2つのオーバーロードでは、単一のコピーまたは単一の移動があります。

于 2013-01-26T07:56:09.800 に答える
5

他の人が言及した点に加えて、古いインターフェースを変更する必要もあります。そして、それが単に受け入れられない場合があります。

于 2013-01-26T07:59:12.417 に答える