Preguntas etiquetadas con move-semantics

12
¿Qué es la semántica de movimiento?
Acabo de terminar de escuchar la entrevista de podcast de radio de Ingeniería de Software con Scott Meyers sobre C ++ 0x . La mayoría de las nuevas funciones tenían sentido para mí, y ahora estoy realmente entusiasmado con C ++ 0x, con la excepción de una. Todavía no obtengo …

7
push_back vs emplace_back
Estoy un poco confundido con respecto a la diferencia entre push_backy emplace_back. void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); Como hay una push_backsobrecarga tomando una referencia de valor no entiendo en qué se emplace_backconvierte el propósito .


6
C ++ 11 valores y confusión semántica de movimiento (declaración de retorno)
Estoy tratando de entender las referencias de valor y mover la semántica de C ++ 11. ¿Cuál es la diferencia entre estos ejemplos y cuál de ellos no va a hacer una copia vectorial? Primer ejemplo std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Segundo …



6
¿Por qué debería std :: mover un std :: shared_ptr?
He estado buscando el código fuente de Clang y encontré este fragmento: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } ¿Por qué querría std::moveun std::shared_ptr? ¿Hay algún punto para transferir la propiedad de un recurso compartido? ¿Por qué no haría esto en su lugar? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { …




4
¿Cuándo hacer un tipo no movible en C ++ 11?
Me sorprendió que esto no apareciera en mis resultados de búsqueda, pensé que alguien habría preguntado esto antes, dada la utilidad de la semántica de movimiento en C ++ 11: ¿Cuándo debo (o es una buena idea para mí) hacer una clase no movible en C ++ 11? (Razones otros …

1
No puede salir del contenido prestado / no puede salir de una referencia compartida
No entiendo el error cannot move out of borrowed content. Lo he recibido muchas veces y siempre lo he resuelto, pero nunca he entendido por qué. Por ejemplo: for line in self.xslg_file.iter() { self.buffer.clear(); for current_char in line.into_bytes().iter() { self.buffer.push(*current_char as char); } println!("{}", line); } produce el error: error[E0507]: …



2
¿Cómo transfiere std :: move () valores a RValues?
Me encontré sin comprender completamente la lógica de std::move() . Al principio, lo busqué en Google, pero parece que solo hay documentos sobre cómo usar std::move() , no cómo funciona su estructura. Quiero decir, sé cuál es la función del miembro de la plantilla, pero cuando miro std::move() definición en …

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.