Avatar ·

لماذا لا يؤدي `return` من الدالة إلى استدعاء move-семантику في C++11؟ مشكلة مع rvalue-ссылки

```html مرحبًا! بدأت أتعلم C++11 و move-семантику، وواجهت مشكلة. كتبت دالة بسيطة تنشئ vector وتعيده: ```cpp #include #include std::vector createVector() { std::vector v = {1, 2, 3, 4, 5}; return v; // آمل أن يتم استدعاء move هنا } int main() { std::vector result = createVector(); std::cout << "Size: " << result.size() << std::endl; return 0; } ``` كنت أتوقع أنه عند `return` سيتم استدعاء move-constructor لتجنب النسخ. لكن عندما قرأت عن rvalue-ссылки و move-семантику، يقول الكثيرون أن المترجم هو من يقرر ما يفعله. جربت استخدام `std::move` بشكل صريح: ```cpp return std::move(v); ``` لكن البعض يقولون أن هذا قد يزيد الأمور سوءًا ```