2011-07-01 64 views
5

Trong C++ 03 bạn có thể sử dụng thủ thuật const& (hoặc "const quan trọng nhất") để kéo dài tuổi thọ của một thời gian tạm thời của tham chiếu. Câu hỏi của tôi là, trong C++ 0x, hành vi này có kéo dài đến tham chiếu rvalue không? I.e auto&& x = someFunction();Quan trọng nhất const & rvalue refs

+0

Tại sao bạn cần điều này? 'const auto &' thực hiện chính xác công việc giống nhau. – RedX

+0

Bạn có thể sửa đổi tạm thời. –

+1

Trên thực tế, nếu bạn nhìn vào các nhà thầu di chuyển, đó là chính xác những gì họ làm. Họ liên kết với một rvalue và sửa đổi nó. – RedX

Trả lời

4

Theo [class.temporary], nếu sau đó biên dịch thì có, toàn bộ thời gian tạm thời được kéo dài.

+1

Không có đề cập rõ ràng về tài liệu tham khảo rvalue, mặc dù tôi cho rằng đó là tiềm ẩn với thuật ngữ "tài liệu tham khảo". Tuy nhiên, làm tôi khó chịu. –

+2

Xem §8.3.2/2: Loại tham chiếu được khai báo sử dụng & được gọi là tham chiếu lvalue và loại tham chiếu được khai báo sử dụng && được gọi là tham chiếu rvalue. (...) Ngoại trừ được ghi chú rõ ràng, chúng tương đương ngữ nghĩa và thường được gọi là tham chiếu. – Vitus

0

Nó biên dịch một cách hoàn hảo trên VC10 SP1:

int && Get() 
{ 
    return 10; 
} 

const auto&& y=Get(); 
Các vấn đề liên quan