2011-07-01 20 views
5

C++ 03'te, geçici bir sürenin ömrünü referansın ömrüne uzatmak için const& numarasını (ya da “en önemli const”) kullanabilirsiniz. Benim sorum C++ 0x, bu davranış referansları yeniden uzanır mı? auto&& x = someFunction();En önemli const & rvalue ref

+0

Neden bu ihtiyacım var? 'const auto &' tam olarak aynı işi yapar. – RedX

+0

Geçici olarak değişiklik yapabilirsiniz. –

+1

Aslında yaptıklarının ne olduğunu anlatan kurucuları hareket ettirirseniz. Bir değere bağlanır ve onu değiştirirler. – RedX

cevap

4

[class.temporary]'a göre, eğer o zaman evet derlenirse, geçici ömür uzatılır.

+1

"Referanslar" terimiyle örtük olduğunu varsayalım, ancak rvalue referansların açık bir ifadesi yoktur. Yine de beni rahatsız ediyor. –

+2

Bkz. §8.3.2/2: & lvalue referansı kullanılarak bildirilen bir başvuru türü ve && ile r = rvalue başvuru olarak adlandırılan bildirilen bir başvuru türü. (...) Açıkça belirtildiği üzere hariç, bunlar semantik olarak eşdeğerdir ve genel olarak referans olarak adlandırılır. – Vitus

0

Mükemmel VC10 SP1 üzerinde derler:

int && Get() 
{ 
    return 10; 
} 

const auto&& y=Get();