¿Cómo se puede utilizar la optimización del valor de retorno ?
¿Hay algún caso en el que pueda confiar en un compilador moderno para usar la optimización, o siempre debo ir de forma segura y devolver un puntero de algún tipo/usar una referencia como parámetro?Confiando en la Optimización del Valor de Retorno
¿Existen casos conocidos en los que no se pueda realizar la optimización del valor de retorno ?, Me parece que la optimización del valor de retorno sería bastante fácil de realizar para un compilador.
Tenga en cuenta que el compilador puede decidir _no_ hacer esto, cuando determina que el RVO no es realmente una optimización en el caso particular. Por lo tanto, no solo debe confiar en que el compilador lo haga cuando sea útil, sino que también debe confiar en que _no_ lo hará cuando sea inapropiado. – MSalters
Para aclarar: un caso común en el que es inapropiado es cuando el tipo devuelto se puede pasar en un registro, p. una clase 'Radians'. La técnica de RVO usa el espacio asignado en la pila y, por lo tanto, tiene la sobrecarga de acceso a la memoria. – MSalters
@MSalters Ok, es interesante saberlo. Básicamente, la optimización que me interesa es evitar, por ejemplo, un std :: vector <> para copiar. –