على سبيل المثال: std :: Quiention_ptr
الإجابة: هذا الرمز صالح الآن:
باستخدام مساحة الاسم STD ؛ auto u = make_uniqueلنقل الكائنات من lambda إلى وظيفة أخرى ، اجعل lambda قابلة للتغيير:
std::unique_ptr11myPointer(new int); std::function example = [std::move(myPointer)] { *myPointer = 4; };
وظيفة مساعد ، make_rref ، يمكن أن تسهل التحرك. تنفيذها كما يلي:
#تضمين
int main () {
std :: Quiention_ptr
using namespace std; auto u = make_unique(some, parameters); go.run([u = move(u)] { do_something_with(u); });
يتم تنفيذ الالتقاط على النحو التالي:
go.run([u = move(u)] mutable { do_something_with(std::move(u)); });
يمنع هذا الحل نسخ lambda إذا كان النوع الذي تم التقاطه غير قابل للنسخ ، وتجنب أخطاء وقت التشغيل.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3