क्या सी ++ मानक कहता है कि मुझे समानता के लिए दो डिफ़ॉल्ट-निर्मित एसटीएल इटरेटर्स की तुलना करने में सक्षम होना चाहिए? डिफ़ॉल्ट-निर्मित इटरेटर समानता-तुलनीय हैं?ऑपरेटर के साथ डिफ़ॉल्ट-निर्मित इटरेटर्स की तुलना ==
मैं निम्नलिखित चाहते हैं, उदाहरण के लिए std :: सूची का उपयोग:
void foo(const std::list<int>::iterator iter) {
if (iter == std::list<int>::iterator()) {
// Something
}
}
std::list<int>::iterator i;
foo(i);
मैं यहाँ क्या चाहते iterators के लिए एक शून्य मूल्य की तरह कुछ है, लेकिन मुझे यकीन है कि अगर यह कानूनी है नहीं कर रहा हूँ। एसटीएल कार्यान्वयन में विजुअल स्टूडियो 2008 के साथ शामिल है, इसमें std :: list's operator ==() में दावा शामिल हैं जो इस उपयोग को रोकते हैं। (वे जांचते हैं कि प्रत्येक इटरेटर एक ही कंटेनर द्वारा "स्वामित्व" होता है और डिफ़ॉल्ट-निर्मित इटरेटर्स में कोई कंटेनर नहीं होता है।) यह संकेत देगा कि यह कानूनी नहीं है, या शायद वे अत्यधिक उत्साही हैं।
'बूस्ट :: वैकल्पिक 'दिमाग में आता है। –
MSalters