Preguntas etiquetadas con rvalue-reference


6
¿Cuáles son los principales propósitos de usar std :: forward y qué problemas resuelve?
En perfecta expedición, std::forwardse utiliza para convertir las referencias rvalue nombre t1y t2las referencias rvalue sin nombre. ¿Cuál es el propósito de hacer eso? ¿Cómo afectaría eso a la función llamada innersi dejamos t1& t2como valores? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

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
Mover captura en lambda
¿Cómo capturo por movimiento (también conocido como referencia de valor) en una lambda C ++ 11? Estoy tratando de escribir algo como esto: std::unique_ptr<int> myPointer(new int); std::function<void(void)> example = [std::move(myPointer)]{ *myPointer = 4; };






3
Los valores de cierre de Lambda se pueden pasar como parámetros de referencia de valor
Descubrí que los lvaluecierres lambda siempre se pueden pasar como rvalueparámetros de función. Vea la siguiente demostración simple. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: …

2
¿Por qué una variable enum es un valor r aquí?
Ejemplo: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } Me sale el siguiente error cuando compilo esto: <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type …
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.