2012-09-02 13 views
5

मुझे लगता है कि इसका उत्तर नहीं है, लेकिन मैं बस यह सुनिश्चित करना चाहता हूं।std ::ss और boost ::'s :: bind और :: फ़ंक्शन कारण समस्याओं को अंतःस्थापित कर सकता है?

यदि मेरे पास std::function फ़ंक्शन में पैरामीटर के रूप में है, तो क्या boost::bind में गुजरने में कोई समस्या है और इसके विपरीत?

संपादित करें:

मुझे पता चला कि बढ़ावा :: बाँध द्वारा प्रयोग किया जाता प्लेसहोल्डर नाम स्थान में सीधे आयात कर रहे हैं जब आप को बढ़ावा देने \ bind.h शामिल है, और वे std :: बाँध साथ असंगत हैं। Std :: bind के लिए आपको प्लेसहोल्डर्स को स्पष्ट रूप से संदर्भित करना होगा, जैसे: std :: प्लेसहोल्डर्स :: _ 1, या कुछ अन्य टाइपपेफ करें या उन्हें दोनों एक साथ उपलब्ध कराने के लिए जादू का उपयोग करें।

+0

आप इस बात से अवगत होना चाहते हैं कि घोंसला वाली बाइंड अभिव्यक्ति क्या है और जांच करें कि उस संबंध में विभिन्न पुस्तकालय एक साथ कैसे बातचीत करते हैं। –

उत्तर

10

सं std:: (और boost::) का पूरा उद्देश्य function है कि वे किसी भी समारोह वस्तु जो lambdas, functors सहित सही signature- साथ कहा जा सकता है, और बाध्यकारी के किसी भी प्रकार के परिणाम को स्वीकार कर सकते है। उन्हें परवाह नहीं है कि आपकी फ़ंक्शन ऑब्जेक्ट कहां से आया या यह किस प्रकार है।

आप उन्हें एक-दूसरे से भी बांध सकते हैं, हालांकि मुझे सच में यकीन नहीं है कि आप क्यों चाहते हैं।

+1

मेरे लिए यह सत्यापित करने के लिए धन्यवाद। मैंने पाया कि बूस्ट अपने प्लेसहोल्डर्स को नामस्थान में आयात करता है जो std :: bind के प्लेसहोल्डर्स के साथ संघर्ष करता है, इसलिए आपको std :: प्लेसहोल्डर्स का उपयोग करके std के प्लेसहोल्डर्स को स्पष्ट रूप से नाम देना होगा :: _ 1 – cwm9

संबंधित मुद्दे