Come si utilizza l'ottimizzazione del valore di ritorno ?
C'è qualche caso in cui posso fidarmi di un compilatore moderno per utilizzare l'ottimizzazione, o dovrei sempre andare in modo sicuro e restituire un puntatore di qualche tipo/usare un riferimento come parametro?Fidati dell'ottimizzazione del valore restituito
Esistono casi noti in cui non è possibile effettuare l'ottimizzazione del valore di ritorno ?, Mi sembra che l'ottimizzazione del valore di ritorno sia abbastanza semplice da eseguire per un compilatore.
Ricordare che il compilatore può decidere di non farlo, quando determina che il RVO non è in realtà un ottimizzazione nel caso specifico. Quindi, non solo devi fidarti del compilatore per farlo quando è utile, ma devi anche fidarti di esso _non_ farlo quando è inappropriato. – MSalters
Per chiarire: un caso comune in cui è inappropriato è quando il tipo restituito può essere passato in un registro, ad es. una classe 'Radians'. La tecnica RVO utilizza lo spazio allocato nello stack e quindi ha il sovraccarico di accedere alla memoria. – MSalters
@MSalters Ok, è interessante sapere. Fondamentalmente, l'ottimizzazione a cui sono interessato è di evitare ad esempio la copia di uno std :: vector <>. –