Do czego referencje chcesz zwrócić? To coś musi istnieć po zakończeniu wykonywania funkcji. Albo będzie to zmienna statyczna wewnątrz funkcji, albo zmienna składowa klasy. No może być jeszcze globalna, ale to ma mniejszy sens.
Dla typów wbudowanych nie ma to najmniejszego sensu. Nigdy tego nie rób.
Dla innych typów prawdopodobnie też nie ma - po to jest RVO oraz move semantics w C++11.
Wynik tej funkcji chcę przypisać do innej zmiennej w innej klasie -> dokładniej do zmiennej typu double. Dlatego, że funkcja jest wykonywana bardzo często zależy mi na każdej możliwej optymalizacji kodu ;-).
Reasumując jest to coś analogicznego do poniższego kodu:
class klasa
{
public:
double x;
const double& fun(){return x;}
};
//...
klasa* obiekt; //tablica obiektów typu klasa
double* tablica; //wskaźnik do tablicy double;
//...
tablica[i] = klasa[i].fun();
Jak wstępnie testowałem to wszystko wykonuje się prawidłowo i wygląda, że jest ok.