के रूप में नहीं मिला है, मैं std::ostream
और किसी भी इटेबल प्रकार के लिए सामान्य operator<<
बनाने की कोशिश कर रहा हूं।सी ++ टेम्पलेट ऑपरेटर मैच
इस कोड है:
template <class T,template<class> class Iterable> inline std::ostream& operator<<(std::ostream& s,const Iterable<T>& iter){
s << "[ ";
bool first=false;
for(T& e : iter){
if(first){
first=false;
s << e;
}else{
s << ", " << e;
}
}
s << " ]";
return s;
}
दुर्भाग्य से मेरी ऑपरेटर एक vector<uint>
के लिए एक मैच के रूप में नहीं पाया जाता है और संकलक operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x)
साथ मिलान करने के लिए प्रयास करता है।
कोई विचार है कि मैं ओवरलोड को कैसे पहचान सकता हूं?
एक और समस्या यह है कि आप एक गैर-कॉन्स 'टी '' का उपयोग कर 'const' कंटेनर पर फिर से प्रयास करने का प्रयास करते हैं। इसके बजाय 'टी &&' या 'टी कॉन्स्ट 'का उपयोग करें। –
इसके अलावा आपको पहले –