साथ जमा मैं निम्नलिखित कोडC++ के बजाय कदम प्रतिलिपि
auto adder = [](string& s1, const string& s2)->string&&
{
if (!s1.empty())
s1 += " ";
s1 += s2;
return move(s1);
};
string test;
test.reserve(wordArray.size() * 10);
string words = accumulate(wordArray.begin(), wordArray.end(),
move(test), adder);
क्या मैं यहाँ चाहते हैं स्ट्रिंग नकल से बचने के लिए है। दुर्भाग्यवश यह जमा करने के बनाम 2012 के कार्यान्वयन द्वारा पूरा नहीं किया गया है। आंतरिक रूप से अन्य फ़ंक्शन कॉल जमा करें _ प्रक्रिया और प्रक्रिया में रैवल्यू कार्यक्षमता खो जाती है।
यह मैं बजाय इतना
string words = _Accumulate(wordArray.begin(), wordArray.end(),
move(test), adder);
मैं इरादा प्रदर्शन लाभ मिल की तरह _Accumulate फ़ंक्शन को कॉल करें।
क्या आरडीडी लाइब्रेरी को रावल्यू तर्कों को ध्यान में रखने के लिए लिखा जाना चाहिए?
क्या कोई अन्य तरीका है जिसे मैं धोखा देने के बिना जो कुछ भी चाहता हूं उसे पूरा करने के लिए जमा कर सकता हूं?
अपने 'test' एक rvalue नहीं है। लैम्ब्डा में 's1' एक रैवल्यू –