sirve que para manejo leer funciones copiar caracteres cadenas cadena c++ c++11 move-semantics rvalue

manejo - strcmp c++ para que sirve



¿Es legal mover el miembro.str() de una cadena de caracteres? (1)

std::ostream::str hecho devuelve una copia de la cadena interna. Así que el movimiento es legal, pero no tiene sentido ya que result.str() es un valor de todos modos y por lo tanto el std::move no hace nada útil. En todo caso, dificulta el RVO, así que no lo hagas. (Como TartanLlama señaló correctamente en su comment , "No muevas el valor de retorno" se cumple en general, no solo cuando se devuelven valores).

En particular, std::move no afecta al objeto de cadena interno de la secuencia.

Considere el siguiente ejemplo:

#include <sstream> template <typename T> inline std::string to_string(T const & op) { std::ostringstream result; result << op; return result.str(); }

Si tuviera que devolver el resultado , en lugar de result.str () se convertiría automáticamente en un valor de r. No así la cadena contenida en el resultado (supongo). Mi expectativa es que se copie y la copia se devuelva como un valor de r.

Entonces mi pregunta aquí es si es legal:

return std::move(result.str());

Supongo que es así, esperando que la transmisión se quede con una cadena válida y vacía. Pero no me siento lo suficientemente seguro como para hacerlo realmente.