move-semantics

¿Qué es std:: move () y cuándo debe usarse?

¿Qué es? ¿Qué hace? ¿Cuándo debe usarse? Los buenos enlaces son apreciados.

¿Qué puedo hacer con un objeto moved-from?

¿Define el estándar con precisión lo que puedo hacer con un objeto una vez que se ha movido de? Solía pensar que todo lo que ... estos detalles en el estándar? (Por cierto, ¿por qué está T c = std::move(a); en lugar de T c(std::move(a)); en la línea 1?)

¿Qué son las semánticas de movimiento?

Acabo de terminar de escuchar la entrevista de podcast de Software Engineering radio con Scott Meyers con respecto a C++0x. L ... dad estoy entusiasmado con C++0x ahora, con la excepción de una. Todavía no consigo mover semántica ... ¿Qué son exactamente?

¿Puede modern C++ obtener rendimiento de forma gratuita?

A veces se afirma que C++11/14 puede obtener un aumento de rendimiento incluso cuando simplemente compila código de C++98. La ... o (evitar copias, pero si usted puede llegar a cualquier otra cosa además de mover semántica, yo también estaría interesado)

empuje hacia atrás vs emplace hacia atrás

Estoy un poco confundido con respecto a la diferencia entre push_back y emplace_back. void emplace_back(Type&& _Val) ... hay una sobrecarga push_back tomando una referencia rvalue no veo muy bien cuál es el propósito de emplace_back se convierte?

¿Por qué no hay move-assignment/move-constructor por defecto?

Soy un simple programador. Mis variables de miembros de clase más a menudo consisten en POD-types y STL-containers. Debido a ... rciona una gran macro para esto. Y si no lo sabías, si implementas move-semantics puedes eliminar el miembro de swap función.

¿Cuándo hacer un tipo no móvil en C++11?

Me sorprendió que esto no apareciera en mis resultados de búsqueda, pensé que alguien lo habría preguntado antes, dada la uti ... mí) hacer una clase no móvil en C++11? (Razones otras que problemas de compatibilidad con el código existente, es decir.)

¿Por qué ' std::move` se llama `std:: move`?

La función C++11 std::move(x) no mueve nada en absoluto. Es solo un molde a r-valor. ¿Por qué se hizo esto? ¿No es engañoso?

¿Cómo std::move() transfiere valores a RValues?

Acabo de encontrarme no entendiendo completamente la lógica de std::move(). Al principio, lo busqué en Google, pero parece ... documento que pueda obtener en Internet será más que bienvenido. (Si solo puedes explicar esto, eso también será increíble).

Mover operador de asignación y ' si (esto!= & rhs)"

En el operador de asignación de una clase, generalmente necesita verificar si el objeto que se asigna es el objeto invocador ... iento? ¿Hay alguna vez una situación donde this == &rhs sería verdad? ? Class::operator=(Class&& rhs) { ? }

¿Por qué movería std:: un rpp std:: compartido?

He estado mirando a través del código fuente Clang y encontré este fragmento: void CompilerInstance::setInvocation( s ... lugar? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = Value; }

¿Por qué copiamos y luego nos movemos?

Vi código en algún lugar en el que alguien decidió copiar un objeto y posteriormente moverlo a un miembro de datos de una cla ... ? ¿Cuál sería la razón para que el autor decida hacer un copiado entonces un movimiento? ¿Cuándo debo hacer esto yo mismo?

¿Cómo uso un deleter personalizado con un miembro de std::unique ptr?

Tengo una clase con un miembro unique_ptr. class Foo { private: std::unique_ptr<Bar> bar; ... }; La barra es ... e(), [](Bar* b){ destroy(b); }); ... } ¿Hay alguna manera de hacer esto con std::unique_ptr como miembro de una clase?

¿Cuándo se debe usar std::move en un valor de retorno de función? [duplicar]

Esta pregunta ya tiene una respuesta aquí: ¿c++11 devuelve optimización de valor o movimiento? [duplicar ... the compiler know? return std::move(foo); //so here the move is needed, right? } Allí se necesita el movimiento, supongo?

¿Cuál es la ventaja de utilizar referencias universales en bucles for basados en rango?

const auto& sería suficiente si quiero realizar operaciones de solo lectura. Sin embargo, me he topado con for (auto& ... for basado en rangos? Por favor concéntrese en la pregunta: ¿por qué querría usar auto&& in range-based for loops?

lista inicializador y semántica de movimiento

Me permite mover elementos de un std::initializer_list<T>? #include <initializer_list> #include <utility> ... de valores como los contenedores normales de la biblioteca estándar de C++, prefiero estar seguro que lamentarlo y preguntar.

¿Puedo inicializar un vector de tipo move-only?

Si paso el siguiente código a través de mi instantánea GCC 4.7, intenta copiar las unique_ptrs en el vector. #include <ve ... t_delete; std::unique_ptr = std:: unique_ptr]' ¿Es GCC correcto al intentar copiar los punteros de la lista inicializador?

¿Hay algún caso en el que sea útil devolver una referencia RValue ( & & )?

¿Hay alguna razón por la que una función debería devolver una referencia RValue? ¿Una técnica, un truco, un modismo o un pa ... cer eso? Probablemente diferente cuando se escribe código de biblioteca o API, en comparación con solo el código del cliente?

¿Es un constructor de movimiento` = default ' equivalente a un constructor de movimiento de miembro?

Es esto struct Example { int a, b; Example(int mA, int mB) : a{mA}, b{mB} { } Example(const Exam ... ample& operator=(const Example& mE) = default; Example& operator=(Example&& mE) = default; } ?

Eficiencia de C++11 push back () con std:: move versus emplace back () para objetos ya construidos

En C++11 emplace_back() se prefiere generalmente (en términos de eficiencia) a push_back() ya que permite la construcción en ... cer: myvector.emplace_back(std::move(mystring)); O es el movimiento aquí totalmente redundante, o no tiene ningún efecto?