2011-07-01 12 views
5

W C++ 03 można użyć sztuczki const& (lub "najważniejszej stałej"), aby wydłużyć czas życia tymczasowego do końca okresu odniesienia. Moje pytanie brzmi, w C++ 0x, czy to zachowanie rozszerza się na odniesienia rvalue? Np. auto&& x = someFunction();Najważniejsze odniesienia do wartości stałych i wartości

+0

Dlaczego potrzebne? "const auto &" wykonuje dokładnie to samo zadanie. – RedX

+0

Można zmodyfikować tymczasowy. –

+1

W rzeczywistości, jeśli spojrzeć na konstruktorów ruchu, to właśnie te, które robią. Wiążą się z wartością i modyfikują ją. – RedX

Odpowiedz

4

Zgodnie z [class.temporary], jeśli kompiluje się, to tak, przedłużono okres użytkowania tymczasowego.

+1

Nie ma wyraźnej wzmianki o odwołaniach do wartości rvalue, choć przypuszczam, że jest to związane z terminem "referencje". Jednak sprawia mi to kłopot. –

+2

Zobacz §8.3.2/2: Typ referencyjny zadeklarowany za pomocą & jest nazywany referencją lwartości, a typ odniesienia, który jest zadeklarowany jako , za pomocą && jest nazywany referencją rvalue. (...) Z wyjątkiem , gdzie wyraźnie zaznaczono, są one semantycznie równoważne i powszechnie nazywane referencjami. – Vitus

0

To kompiluje doskonale na VC10 SP1:

int && Get() 
{ 
    return 10; 
} 

const auto&& y=Get(); 
Powiązane problemy