c++ - no match for call when using c++0x Lambda expressions -


यह समस्याग्रस्त कार्य है:

  शून्य अणु :: init समानता (int गहराई) { Int m = 1; के लिए (एट जे = 0; जे एंड एलटी; गहराई; जे ++) के लिए (इंट I = 0; i & lt; _size; i ++) // किसी भी परमाणु के लिए यदि (! GetSetMask (// सभी परमाणु डालते हैं जो बराबर हैं लेकिन समान नहीं हैं अपने एक ही समीकरण के बराबर // [और] (const एटम और बी) - & gt; bool {रिटर्न (_atoms [i] - & gt; _class == b._class) & amp;! (हैसिमिलर (* _ परमाणु) [I], b));}, [& amp; m] (एटम और बी) {b._class = m;} // 113) .one ()) m ++; // 114}   

और आउटपुट:

फ़ाइल में /usr/include/c++/4.5/memory:82ZE , <पूर्व> से /usr/include/boost/dynamic_bitset_fwd.hpp15, /usr/include/boost/dynamic_bitset/dynamic_bitset.hpp36 से, /usr/include/boost/dynamic_bitset.hpp से: डेटा स्ट्रक्चर / मोलेक्यूल। सीपीपी: 8:

/ usr / include / c ++ / 4.5 / कार्यात्मक से डेटा स्ट्रक्चर / मोलेकुलल एच: 15 से: स्थिर सदस्य फ़ंक्शन में ? स्थिर शून्य std :: _ Fun__handler :: _ M_invoke (const std :: _ any_data और, _ArgTypes ...) [के साथ _Functor = अणु :: init समानता (int) ::, _ArgTypes = {एटम}] एक ????: < / P>

/ usr / include / c ++ / 4.5 / कार्यात्मक: 2103: 6: std :: function & lt; _Res (_ArgTypes ...) & gt; :: function (_Functor, typename std से तत्काल) :: Enable_if & lt; (! Std :: is_integral & lt; _Functor & gt; :: value), std :: function & lt; _Res (_ArgTypes ...) & gt; :: _ बेकार & gt; :: टाइप करें) [के साथ _Functor = अणु :: initSimilarity (int ) ::, _Res = void, _ArgTypes = {एटम}, टाइप नाम std :: enable_if & lt; (! Std :: is_in Tegral & lt; _Functor & gt; :: value), std :: function & lt; _Res (_ArgTypes ...) & gt; :: _ बेकार & gt; :: type = std :: function :: _ बेकार]

डेटा स्ट्रक्चर / मोलेक्यूलर सीपीपी: 114: 5:
यहां से तत्काल

/ usr / include / c ++ / 4.5 / कार्यात्मक: 1713: 9: त्रुटि: कॉल करने के लिए कोई भी मेल

एक (????) (अणु :: init समानता (int): :) (एटम) एक ????

डेटा स्ट्रक्चर / मोलेक्यूल सीपीपी: 113: 17: नोट: उम्मीदवार है: अणु :: InitSimilarity (int) ::

मुझे नहीं पता कि यह कैसे होता है और इसका बिल्कुल क्या मतलब है, और मुझे Google पर कोई भी मदद नहीं मिली ...

बुलाया फ़ंक्शन (isimilar ()):

  बूल मोलेक्यूले :: इज़िमर (कॉन्स्ट एटम एंड ए, कॉन्स्ट एटम एंड बी) {एटम एससेट एस; (इंट आई = 0; आई & lt; _size; i ++) के लिए (यदि (! _adjecancy [ए_ इंडिक्स] [i]) जारी रहेगा; // किसी भी परमाणुओं को छोड़ें जो कि ए इंट के = एटॉम ([& amp;] (const एट ए एंड बी) के लिए सिकुड़ नहीं हैं {रिटर्न (_adjecancy [बी_ इंडेक्स] [बी.आईंडएक्स]) & amp; amp; (बी। == बी.-क्लास) & amp; amp; (! एस [बी_ इंडैक्स]);}); यदि (के == -1) वापसी झूठी; S.flip (के); } वापस सच; }   

और इसे से बुलाया गया है:

  int मोलेक्यूल :: खोजआटम (std :: function & lt; bool (const एटम) & gt; संपत्ति, std (यदि (संपत्ति (* _ परमाणुओं [i])) {if (action! = NULL) कार्रवाई () (क्रिया (=!) * _atoms [i]); वापसी i; }} वापसी -1; }   

उपयोग किया गया टाइप किया गयाफ़ीम:

  टाइप किए गए गति dynamic_bitset & lt; & gt; AtomSet; Typedef dynamic_bitset & lt; & gt; :: आकार_प्रकार atom_ind;   

और निश्चित रूप से, फ़ंक्शन जो त्रुटि आउटपुट में तारे:

  AtomSet आणविक :: getSetMask (std :: function & lt; bool (const एटम) & Gt; संपत्ति, std :: function & lt; शून्य (एटम) & gt; कार्रवाई = नल) {dynamic_bitset & lt; & gt; सेवानिवृत्त (_size); अगर (गुण! = नल) के लिए (इंट आई = 0; आई & lt; _size; i ++) रिसेट। (आई, प्रॉपर्टी (* एटॉम [आई])); रिटर्न रिट; }    

मैं लैम्ब्डा के तर्क प्रकार में संदर्भ देखता हूं, और कोई संदर्भ नहीं getSetMask के द्वारा आवश्यक फ़ैक्टर प्रकार।

क्या आप इन संगत बनाते हैं तो क्या आपकी त्रुटि बनी रहती है?

यदि आप एटम को संशोधित करने की कार्रवाई चाहते हैं, तो आपको

  std :: function & lt; void (एटम & amp;) & gt; क्रिया    

Comments