मैं सी #+ में लैम्ब्डा के साथ काम करने की कोशिश कर रहा हूं ताकि उन्हें सी # में एक बड़ा सौदा किया जा सके। मेरे पास वर्तमान में एक बूस्ट टुपल है (यह वास्तव में सरलीकृत संस्करण है)।सी ++ 0x में लैम्ब्डा कैश कैसे करें?
typedef shared_ptr<Foo> (*StringFooCreator)(std::string, int, bool)
typedef tuple<StringFooCreator> FooTuple
मैं तो मेरे FooTuple में ग्लोबल नेम स्पेस में एक समारोह लोड। आदर्श रूप में, मैं इसे एक लैम्ब्डा से बदलना चाहता हूं।
tuplearray[i] = FooTuple([](string bar, int rc, bool eom) -> {return shared_ptr<Foo>(new Foo(bar, rc, eom));});
मैं यह नहीं समझ सकता कि लैम्ब्डा टुपल के लिए फ़ंक्शन हस्ताक्षर क्या होना चाहिए। यह स्पष्ट रूप से एक फ़ंक्शन पॉइंटर नहीं है, लेकिन मैं यह नहीं समझ सकता कि लैम्ब्डा का हस्ताक्षर क्या होना चाहिए। लैम्ब्डा के लिए संसाधन अभी बहुत पतले हैं। मुझे एहसास है कि इस समय सी ++ 0x प्रवाह में है, लेकिन मैं काम करने के लिए इसे कैसे प्राप्त करने के बारे में उत्सुक था। मुझे यह भी पता है कि ऐसा करने के लिए सरल तरीके हैं, लेकिन मैं बस सी ++ 0x के साथ खेल रहा हूं। मैं इंटेल 11.1 कंपाइलर का उपयोग कर रहा हूं।
काम नहीं करेगा - एक लैम्ब्डा अभिव्यक्ति फ़ंक्शन पॉइंटर नहीं है। यह (अवधारणात्मक रूप से) एक अज्ञात मजेदार वर्ग है। मैंने जो चीजें पढ़ी हैं, उससे –
, संकलक इसे समझने में सक्षम होना चाहिए और अगर यह नहीं कर सकता है तो मुझे बताएगा। मैं इसे देख लूंगा। धन्यवाद। – Steve
@Terry hmm यह अजीब है, क्योंकि यह कोड अभी संकलित करता है और जीसीसी पर चलता है। – joshperry