I have the following code, I am using GCC and C++11:
std::string system_call(const char *cmd){
   std::string a;
   ...
   return a;
}
std::string st = system_call("whatever code");
Is there an implicit copy there? I am calling this function many times, and I guess it is doing a copy from the return value of the system_call to the variable st, and later on releasing the temporary r-value.
Is there any way I can avoid the copy? Using st.swap(system_call()) throws and error in the compiler:
error: no matching function for call to 'std::basic_string::swap(std::string)'
My questions are:
- If there is a problem or not
 - How to avoid it, if there is one
 
Thanks
Aucun commentaire:
Enregistrer un commentaire