&&
является новым в C ++ 11. int&& a
означает, что "a" является ссылкой на r-значение. &&
обычно используется только для объявления параметра функции. И это только принимает выражение r-значения. Если вы не знаете, что такое r-значение, простое объяснение состоит в том, что у него нет адреса памяти. Например. число 6 и символ 'v' оба являются r-значениями. int a
, a является значением l, однако (a+2)
является значением r. Например:
void foo(int&& a)
{
//Some magical code...
}
int main()
{
int b;
foo(b); //Error. An rValue reference cannot be pointed to a lValue.
foo(5); //Compiles with no error.
foo(b+3); //Compiles with no error.
int&& c = b; //Error. An rValue reference cannot be pointed to a lValue.
int&& d = 5; //Compiles with no error.
}
Надеюсь, что это информативно.