आइए कल्पना करें कि मैं एक टेम्पलेट फ़ंक्शन बनाना चाहता हूं जो किसी भी एसटीएल कंटेनर का पहला तत्व लौटाता है। सामान्य तरीका होगा:टेम्पलेट पैरामीटर एक जोड़ी सहयोगी कंटेनर है या नहीं, तो परीक्षण कैसे करें?
template<typename Container>
Container::value_type first(Container c){
return *(c.begin());
}
यह वैक्टर, सूचियों, डेक, सेट आदि के लिए काम करता है।
हालांकि, जोड़ी साहचर्य कंटेनर (std :: नक्शा) के लिए, अगर करना चाहते हैं
return c.begin()->second;
मैं कैसे परीक्षण कर सकते हैं (समारोह में या टेम्पलेट विशेषज्ञता के साथ) अगर मैं एक जोड़ी साहचर्य कंटेनर है?
एसटीएल कंटेनर के पास कोई विशेषता नहीं है। क्या यह जांचना संभव है कि इसमें :: key_type है या नहीं?
अच्छा जवाब। इसे संकलित करने के लिए, ';' structs के अंत में गायब हैं और .front() –
ओप्स के लिए काम नहीं करता है, जो आपको थोड़ा तेज़ उत्तर देने से मिलता है: मैंने गायब ';' जोड़ा है और एक 'रेफरेंस' 'शुरू करें' :) –