นิยาม
&& เป็น reference operator ใหม่ในมาตรฐาน C++11 int&& a หมายถึง "a" เป็น r-value reference
ใช้ประกาศพารามิเตอร์ฟังก์ชันเป็นหลัก รับเฉพาะ r-value expression เท่านั้น
R-value vs L-value
- R-value: ค่าที่ไม่มี memory address เช่นตัวเลข 6, ตัวอักษร 'v', นิพจน์
(a+2) - L-value: มี memory address เช่นตัวแปร
int a
ตัวอย่าง
void foo(int&& a) {
// Some magical code...
}
int main() {
int b;
foo(b); // Error: r-value ref ไม่รับ l-value
foo(5); // OK: 5 เป็น r-value
foo(b + 3); // OK: b+3 เป็น r-value
int&& c = b; // Error: r-value ref ไม่รับ l-value
int&& d = 5; // OK: 5 เป็น r-value
}
อ้างอิงเพิ่มเติม
อ่านเพิ่มเติมเกี่ยวกับ R-value references: MSDN blog - Rvalue References: C++0x Features in VC10