Resultados de la búsqueda a petición "move-semantics"

4 la respuesta

¿Es realmente necesario std :: move en la lista de inicialización del constructor para miembros pesados pasados por valor?

Recientemente leí un ejemplo decppreference ... / vector / emplace_back [http://en.cppreference.com/w/cpp/container/vector/emplace_back]: struct President { std::string name; std::string country; int year; President(std::string p_name, ...

1 la respuesta

¿Por qué el compilador no se queja de que un iterador movido a un bucle for es inmutable?

Estoy leyendo la segunda edición del Rust Book y encontré el siguiente ejemplo en la sección de iteradores: let v1 = vec![1, 2, 3]; let v1_iter = v1.iter(); for val in v1_iter { println!("Got: {}", val); }¿Por qué el compilador no se queja de ...

2 la respuesta

¿Cuáles son las reglas para la generación automática de operaciones de movimiento?

En C ++ 98, el compilador de C ++ podríaautomáticamente generar un constructor de copias y un operador de asignación de copias a través de una copia inteligente, p. struct X { std::string s; std::vector<int> v; int n; ...

5 la respuesta

Hacer el intercambio más rápido, más fácil de usar y seguro para excepciones

No pude dormir anoche y empecé a pensar enstd::swap. Aquí está la versión familiar de C ++ 98: template <typename T> void swap(T& a, T& b) { T c(a); a = b; b = c; }Si una clase definida por el usuarioFoo utiliza recursos externos, esto es ...

2 la respuesta

La asignación de movimiento es más lenta que la asignación de copia: ¿error, función o no especificado?

Recientemente me di cuenta de que la adición de la semántica de movimiento en C ++ 11 (o al menos mi implementación de esto, Visual C ++) ha sido activa (y bastante dramática)roto Una de mis optimizaciones. Considere el siguiente ...

1 la respuesta

¿Es std :: move (* this) un buen patrón?

Para que este código con calificadores de referencia de C ++ 11 funcione como se esperaba, tengo que introducir unstd::move(*this) eso no suena bien. #include<iostream> struct A{ void gun() const&{std::cout << "gun const&" << std::endl;} void ...

2 la respuesta

Versión de solo movimiento de std :: function

Porquestd::function es copiable, el estándar requiere que los llamables utilizados para construirlo también sean copiables: n337 (20.8.11.2.1) template<class F> function(F f); Requiere:F será CopyConstructible.f será invocable (20.8.11.2) para ...

2 la respuesta

¿Son std :: move y std :: copy idénticos?

Traté de hacer algo como: std::copy(std::make_move_iterator(s1.begin()), std::make_move_iterator(s1.end()), std::make_move_iterator(s2.begin()));Y obtuve este error: error: using xvalue (rvalue reference) as lvalue *__result ...

2 la respuesta

Elementos no copiables en vector

Tengo una clase no copiable (es decir, el constructor de copia y el operador de asignación están marcados como 'eliminar'). Me gustaría mantenerlos en un std :: vector. Es una clase RAII, por lo que simplemente no es lo que busco almacenar ...

2 la respuesta

Mover o intercambiar una secuencia de cadenas

Quiero mover un flujo de cadena, en la aplicación del mundo real tengo algún miembro de datos de clase de flujo de cadena, que quiero reutilizar para diferentes cadenas durante la operación. stringstream no tiene una asignación de copia o un ...