use of rvalue reference and auto

前端 未结 4 1607
孤城傲影
孤城傲影 2021-01-19 21:11

Given the code below, everything works. How come that the variable d is reference to int? What is going on?

int main()
{
    int a= 10;
    int &&b =         


        
4条回答
  •  别那么骄傲
    2021-01-19 21:35

    There is a special rule in type deduction. In auto &&d = a; "auto&&" is an rvalue reference to a non-const non-volatile type and "a" is an lvalue, then this special rule is applied: the type of "a" is treated as int& instead of int. Then as usual choose the type of "auto" to be identical to the type of "a", that is int&. So the type of "auto&&" is int& according to reference collapsing as mentioned by bames53.

提交回复
热议问题