rvalue references

8 views
Skip to first unread message

Hernán Leoni

unread,
Apr 12, 2013, 8:44:31 AM4/12/13
to cp...@googlegroups.com
Hola gente !!!

Estaba leyendo un poco de las rvalue references, es increíble como pude ser este tema que un segundo después de haber entendido se enrieda todo de nuevo.

Lo último que estuve mirando es acá
http://thbecker.net/articles/rvalue_references/section_01.html

lo que estoy tratando, además de terminar de incorporar el concepto, es de encontrar cuales son las buenas prácticas para aprovechar esto.

Se puede decir que con crear constructores y operadores de asignación con move semantics es suficiente?
Tiene realmente sentido comenzar a usar rvalue references en otras funciones? Tengo que terminar de ver la sección del perfect forwarding que parece tener que ver con esto, el ejemplo del factory es claro, pero veo que la solución involucra bastante código extra y no muy facil de leer. Se podría decir que en caso de este tipo de funciones solo conviene ponerse a ver esto cuando es una funciona llamada miles de veces por segundo?

Gracias,
Un saludo

Hernán

Agustín K-ballo Bergé

unread,
Apr 15, 2013, 12:06:33 PM4/15/13
to cp...@googlegroups.com
Ya que nadie hace comentarios al respecto, he aqu� mi opini�n:

> Se podr�a decir que en caso de este tipo de funciones solo conviene
ponerse a ver esto cuando es una funciona llamada miles de veces por
segundo?

No veas rvalue references como una optimizaci�n, es una nueva sem�ntica.
La sem�ntica de movimiento permite expresar m�s directamente una
intenci�n (que incidentalmente puede resultar en c�digo m�s eficiente).

En cuanto a par�metros de funciones, las recomendaciones son las mismas
que para C++03:

- Si necesitas una copia del par�metro, tomalo por valor en vez de
tomarlo por referencia y realizar la copia internamente. Esto permite
copy-elision (C++03) y move semantics cu�ndo la copia no puede ser
eliminada (C++11).

- Devolv� valores de una funci�n por valor, en vez de tomar p�rametros
adicionales de salida. Esto permite RVO y NRVO (C++03) y move semantics
cu�ndo la copia no puede ser eliminada (C++11).

Para m�s detalles, podes leer "Want Speed? Pass by Value"[
http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/ ] as� como
los siguientes 4 articulos incluidos en la serie.

Agust�n K-ballo Berg�.-
http://talesofcpp.fusionfenix.com

On 12/04/2013 09:44 a.m., Hern�n Leoni wrote:
> Hola gente !!!
>
> Estaba leyendo un poco de las rvalue references, es incre�ble como
> pude ser este tema que un segundo despu�s de haber entendido se
> enrieda todo de nuevo.
>
> Lo �ltimo que estuve mirando es ac�
> http://thbecker.net/articles/rvalue_references/section_01.html
>
> lo que estoy tratando, adem�s de terminar de incorporar el concepto,
> es de encontrar cuales son las buenas pr�cticas para aprovechar esto.
>
> Se puede decir que con crear constructores y operadores de asignaci�n
> con move semantics es suficiente?
> Tiene realmente sentido comenzar a usar rvalue references en otras
> funciones? Tengo que terminar de ver la secci�n del perfect forwarding
> que parece tener que ver con esto, el ejemplo del factory es claro,
> pero veo que la soluci�n involucra bastante c�digo extra y no muy
> facil de leer. Se podr�a decir que en caso de este tipo de funciones
> solo conviene ponerse a ver esto cuando es una funciona llamada miles
> de veces por segundo?
>
> Gracias,
> Un saludo
>
> Hern�n
> --
> --
> �Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has
> recibido este mesaje por error.
> En caso de duda visita "http://groups.google.com/group/cppba"
> ---
> Has recibido este mensaje porque est�s suscrito al grupo "CyC++ Buenos
> Aires" de Grupos de Google.
> Para anular la suscripci�n a este grupo y dejar de recibir sus correos
> electr�nicos, env�a un correo electr�nico a
> cppba+un...@googlegroups.com.
> Para obtener m�s opciones, visita
> https://groups.google.com/groups/opt_out.
>
>

Reply all
Reply to author
Forward
0 new messages