संपादित करें: यह जुड़ा हुआ सवाल (जो मेरा भी है) के दोहराया नहीं है। यहां सभी रिटर्न प्रकार
std::vector
हैं। मैंinitializer-list
वापस नहीं करना चाहता हूं। मैं वापस आstd::vector
initializer-list
से भरना चाहते हैं सीधेवापसी प्रारंभकर्ता सूची के बजाय वेक्टर :: समारोह
हमें उन चार मामलों लेते हैं:
1)
//Acceptable
std::vector<int> foo(){
return std::vector<int>{1};
}
2)
//Acceptable
std::vector<int> foo(){
return {1};
}
3)
//Acceptable
std::function<std::vector<int>()> foo=[](){
return std::vector<int>{1};
};
4)
//NOT Acceptable
std::function<std::vector<int>()> foo=[](){
return {1};
};
क्यों 4 स्वीकार्य नहीं है 2 के बाद से स्वीकार्य है? उनके बीच क्या अंतर है? इसके अलावा, सबसे अजीब बात यह है कि इस स्वीकार्य है:
//Acceptable
auto bar=[]()->std::vector<int>{
return {1};
};
क्या std::function
और initializer-list
साथ गलत क्या है?
संभावित डुप्लिकेट [मैं लैम्बडा से प्रारंभिक सूची क्यों नहीं लौटा सकता] [http://stackoverflow.com/questions/35361408/why-i-can-not-return-initializer-list-from-lambda) –
इससे पहले मैं यह कहता हूं: लिंक किए गए उत्तर आपकी आंखों में इसका उत्तर कैसे नहीं देते? –
यह अलग है। एक प्रारंभकर्ता-सूची लौटने के बारे में वह सवाल। यहां सभी मामलों में वापसी का प्रकार एक वेक्टर है। –