विफल रहता है, मैं नई libcxx लाइब्रेरी का उपयोग कर रहा हूं और मेरे पास एक कोड है जो सॉकेट फ़ंक्शन bind()
पर कॉल करता है। समस्या यह है कि जब मैं using namespace std;
टाइप संकलक मेरा पीछा कोड के लिए त्रुटि देता है:libcxx के साथ सॉकेट फ़ंक्शन बाइंड() का उपयोग करने वाला कोड संकलित
int res = bind(sockfd, (struct sockaddr *)&myAddr, sizeof(myAddr));
बजना (SVN निर्माण) का उपयोग कर त्रुटि:
error: no viable conversion from '__bind<int &, sockaddr *, unsigned long>' to 'int'
int res = bind(sockfd, (struct sockaddr *)&myAddr, sizeof(myAddr));
मुझे लगता है कि समस्या यह है कि using namespace std;
है कि शीर्षलेख <functional>
से दायरे में std::bind()
फ़ंक्शन लाता है (हालांकि हेडर शामिल नहीं है)। चूंकि मैं एक थर्ड पार्टी लाइब्रेरी का उपयोग कर रहा हूं जो पूरे नामस्थान std का उपयोग करता है, मैं वर्ग नामों को पूरी तरह से योग्य नामों में आसानी से नहीं बदल सकता।
मैं सोच रहा था कि क्या यह पुस्तकालय की या कि क्या वहाँ सी ++ 11 में कुछ नए नियम है कि संभावित एक पुराने कोड bind()
का उपयोग करता है तोड़ सकता हैं कार्यान्वयन में एक समस्या है। इस पर किसी भी विचार की सराहना की जाएगी।
धन्यवाद
रोमन
जब आप कहते हैं कि तीसरी पार्टी लाइब्रेरी संपूर्ण नेमस्पेस std का उपयोग करती है तो आपका क्या मतलब है? – Troubadour
मेरा मतलब है कि इसमें कुछ फाइलों में 'नेमस्पेस std;' का उपयोग किया गया है। –
संभावित रूप से केवल स्रोत फ़ाइलों में और शीर्षकों में नहीं? इससे आपको बिल्कुल प्रभावित नहीं होना चाहिए। – Troubadour