为什么VS无法将右值引用绑定到指针?

时间:2018-06-30 17:55:03

标签: c++ visual-c++ rvalue-reference

请考虑以下示例(出于假设目的):

#include <iostream>

void f(int *&&b)
{
    ++b;
    std::cout << *b;
}

int main()
{
    int a[] = { 1,2,3,4 };
    f(a);
}

据我所知,数组a衰减为int *,该数组是临时的,因此是一个右值,int *&&b应该愉快地绑定到它并延长其寿命f的功能。如果我run this with C++14 (gcc 6.3)并且结果为2,就会发生这种情况。但是在VS2017中,出现错误:

  

错误C2664'无效f(int * &&)':无法将参数1从'int   [4]'为'int * &&'

如果我使用std::move来强制xvalue f(std::move(a));,它也可以在VS中使用。在这种情况下,我需要使用std::move还是VS中的某种错误?

0 个答案:

没有答案