إذا قمت بتحديد مشغل المهمة لاتخاذ قيمة ، فلا يجب (لا تحتاج إلى) تحديد مشغل المهمة الذي يتخذ مرجعًا RValue. لا جدوى من ذلك.
بشكل عام ، تحتاج فقط إلى توفير الحمل الزائد لاتخاذ مرجع RValue عندما تحتاج إلى التمييز بين LVALUE عن rvalue ، ولكن في هذه الحالة يعني اختيارك للتنفيذ أنك لا تحتاج إلى التمييز. سواء كان لديك lvalue أو rvalue ، فسوف تقوم بإنشاء الوسيطة وتبادل المحتويات.
String f();
String a;
a = f(); // with String& operator=(String)
في هذه الحالة ، سيقوم المترجم بحل المكالمة ليكون a.operator=(f());
سوف يدرك أن السبب الوحيد لقيمة الإرجاع هو الوسيطة operator=
وسوف يرفع أي نسخة -هذه هي الهدف من جعل الوظيفة تأخذ قيمة في المقام الأول!