मैं निम्नलिखित कोड है:उपयुक्त तरीका
#include <iostream>
#include <string>
using std::cout;
using std::endl;
void bar(const std::string& str)
{
cout << "const str - " << str << endl;
}
void bar(std::string&& str)
{
cout << "str - " << str << endl;
}
void foo(std::string&& str)
{
bar(str);
}
int main()
{
foo("Hello World");
}
उपरोक्त कोड में void bar(const std::string& str)
अधिभार कहा जाता हो जाता है। मैं शून्य bar(std::string&& str)
अधिभार के नाम से जाना चाहते हैं मैं या तो लिखने के लिए bar(std::move(str));
या bar(std::forward<std::string>(str));
जाहिर है आगे कोड लंबे समय तक है, लेकिन यह मेरे लिए अधिक समझ में आता है। मेरा सवाल यह है कि अधिक सामान्य रूप से उपयोग और पसंद किया जाता है। bar(std::forward(str));
लेखन सबसे अच्छा समाधान imo होगा, लेकिन वह एक विकल्प :)
आप इसे स्थानांतरित कर सकते हैं, आगे टेम्पलेट कोड में उपयोग किया जाना चाहिए जब आप यह सुनिश्चित नहीं कर सकते कि यह रावल्यू या लैवल्यू संदर्भ है या नहीं। :) templated कोड और मतलब सार्वभौमिक संदर्भ में, जो या तो rvalue या lvalue हो सकता है। – Melkon
@Melko यदि आप अपनी टिप्पणी को उत्तर देते हैं, तो मैं इसे स्वीकार कर सकता हूं :) – rozina
धन्यवाद, मैं यह करता हूं। :) – Melkon