2012-10-20 36 views
8

हैं यदि मेरे पास दो std::function एस हैं, तो मैं कैसे जांच सकता हूं कि दोनों एक ही कार्य करते हैं या नहीं?जांचें कि क्या दो std :: function समान

अतिरिक्त जानकारी: मेरे पास std::vector<std::function<void()>> फ़ंक्शन का वेक्टर है और वेक्टर में कोई अन्य फ़ंक्शन जोड़ने से पहले मैं यह जांचना चाहता हूं कि यह पहले से मौजूद है या नहीं।

+0

लैम्बडास बिल्कुल समकक्ष हो सकता है, लेकिन चूंकि उनके पास == ऑपरेटर नहीं है, इसलिए आप उनकी तुलना नहीं कर सकते हैं। आप एक unique_ptr –

+0

का उपयोग करके बेहतर हैं, एक अद्वितीय_ptr का उपयोग करके यह कार्य कैसे संभाल सकता है? – danijar

+0

यह एक डुप्लिकेट प्रतीत होता है: https://stackoverflow.com/questions/3629835/why-is-stdfunction-not-equality-comparable –

उत्तर

4

मुझे नहीं लगता कि दोनों की तुलना की जा सकती है। यहाँ एक example std :: समारोह तुलना पर कुछ अंक

-1

आम तौर पर std::function और boost::function तुलना नहीं की जा समझाने के लिए है क्योंकि वे की जरूरत है उनके संग्रहीत वस्तु तुलनीय हो लेकिन सभी समारोह वस्तुओं और भी lambdas operator== तो std या boost कार्यों कोई है है उन्हें तुलना करने का तरीका