"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C ++ लैम्ब्डा में मोबाइल कैप्चर कार्यान्वयन युक्तियाँ

C ++ लैम्ब्डा में मोबाइल कैप्चर कार्यान्वयन युक्तियाँ

2025-04-12 को पोस्ट किया गया
ब्राउज़ करें:693

] उदाहरण के लिए:

How to Implement Move Capture in C   Lambdas?
std :: अद्वितीय_प्ट्र myPointer (नया int); std :: function उदाहरण = [std :: move (mypointer)] { *MyPointer = 4; }; यह कोड अब मान्य है:

नेमस्पेस std का उपयोग करना; ऑटो यू = make_unique (कुछ, पैरामीटर); go.run ([u = move (u)] {do_something_with (u);}); ] 11

एक सहायक फ़ंक्शन, make_rref, ले जाने की सुविधा प्रदान कर सकता है। इसका कार्यान्वयन इस प्रकार है:

#में शामिल हैं #include #include टेम्पलेट संरचना rref_impl { rref_impl () = हटाएं; rref_impl (t && x): x {std :: Move (x)} {} {} RREF_IMPL (RREF_IMPL और अन्य) : x {std :: move (orther.x)}, iscopied {true} { मुखर (अन्य। } rref_impl (rref_impl && अन्य) ) { } rref_impl & ऑपरेटर = (rref_impl अन्य) = हटाएं; T & ऑपरेटर && () { वापसी std :: मूव (x); } निजी: टी एक्स; बूल iscopied = गलत; }; टेम्पलेट rref_impl make_rref (t && x) { RREF_IMPL {std :: Move (x)} लौटें; }

make_rref के लिए एक परीक्षण मामला:

int main () { std :: अद्वितीय_ptr p {new int (0)}; ऑटो rref = make_rref (std :: move (p)); ऑटो लैम्ब्डा = ] }; मुखर (लैम्ब्डा ()); assert (! lambda ()); … #include मुख्य प्रवेश बिंदु() { std :: अद्वितीय_ptr p {new int (0)}; ऑटो लैम्ब्डा = कैप्चर (std :: Move (p), ] }); मुखर (लैम्ब्डा ()); assert (! lambda ()); }
std::unique_ptr myPointer(new int);

std::function example = [std::move(myPointer)] {
   *myPointer = 4;
};
कैप्चर निम्नानुसार लागू किया गया है:

#इसमें शामिल हैं टेम्पलेट क्लास कैप्चर_इम्पल { टी एक्स; एफ एफ; जनता: Capture_impl (t && x, f && f) ) टेम्पलेट ऑटो ऑपरेटर () (ts && ... args) -> decltype (f (x, std :: Forder (args) ...)) { वापसी f (x, std :: आगे (args) ...); } टेम्पलेट ऑटो ऑपरेटर () (ts && ... args) const -> decltype (f (x, std :: Forder (args) ...)) { वापसी f (x, std :: आगे (args) ...); } }; टेम्पलेट Capture_impl कैप्चर (t && x, f && f) { Capture_impl लौटें ( std :: Forder (x), std :: Forred (f)); …

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3