मुझे समझ में नहीं आता है कि ऑपरेटर के आरएचएस पर प्रारंभकर्ता सूचियों का उपयोग क्यों नहीं किया जा सकता है। पर विचार करें:ऑपरेटरों की प्रारंभिक सूचियां और आरएचएस
class foo { };
struct bar
{
template<typename... T>
bar(T const&...) { }
};
foo& operator<<(foo& f, bar const&) { return f; }
int main()
{
foo baz;
baz << {1, -2, "foo", 4, 5};
return 0;
}
नवीनतम बजना (जीसीसी के साथ-साथ) की शिकायत है:
clang.cc:14:9: error: initializer list cannot be used on the right hand side of operator '<<'
baz << {1, -2, "foo", 4, 5};
^~~~~~~~~~~~~~~~~~~~~
^~~~~~~~~~~~~~~~
क्यों सी ++ मानक इस ना करे होगा? या अलग-अलग रखें, यह
baz << bar{1, -2, "foo", 4, 5};
के विरोध में विफल क्यों होता है?
क्योंकि आपने आरएचएस पर 'प्रारंभकर्ता_सूची <>' लेने के लिए 'ऑपरेटर <<' अधिभारित नहीं किया है ... आपका वास्तविक प्रश्न क्या है? – ildjarn
मैं उम्मीद कर रहा था कि यह 'baz << bar {1, 2, 3, 4, 5} के बराबर है; ', लेकिन ऐसा लगता है कि कोई रूपांतरण नहीं होता है। – mavam
यदि यह वही व्यवहार है जो आप चाहते हैं, तो आपको 'बार' को एक गैर-स्पष्ट कन्स्ट्रक्टर देने का प्रयास करना चाहिए जो एक 'प्रारंभकर्ता_सूची <> 'लेता है। – ildjarn